历史上的今天
今天是:2025年01月07日(星期二)
2018年01月07日 | 51单片机超声测距程序
2018-01-07 来源:eefocus
超声测距器单片机程序
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
extern void cs_t(void);
extern void delay(uint);
extern void display(uchar*);
data uchar testok;
/*主程序*/
void main(void)
{
data uchar dispram[5];
data uint i;
data ulong time;
P0 = 0xff;
P2 = 0xff;
TMOD = 0x11;
IE = 0x80;
while (1)
{
cs_t();
delay(1);
testok = 0;
EX0 = 1;
ET0 = 1;
while (!testok) display(dispram);
if (1 == testok)
{
time = TH0;
time = (time<<8) | TL0;
time *=172;
time /= 10000;
dispram[0] = (uchar) (time % 10);
time /= 10;
dispram[1] = (uchar) (time % 10);
time /= 10;
dispram[2] = (uchar) (time % 10);
dispram[3] = (uchar) (time / 10);
if (0 == dispram[3]) dispram[3] = 17;
} else
{
dispram[0] = 16;
dispram[1] = 16;
dispram[2] = 16;
dispram[3] = 16;
}
for (i=0; i<300; i++) display(dispram);
}
}
//
/*超声接收程序(外中断0)*/
void cs_r(void) interrupt 0
{
TR0 = 0;
ET0 = 0;
EX0 = 0;
testok = 1;
}
/*超时清除程序(内中断T0)*/
void overtime(void) interrupt 1
{
EX0 = 0;
TR0 = 0;
ET0 = 0;
testok = 2;
}
;-------------------------------------
;超声发生子程序(12M晶振38.5Hz)
;-------------------------------------
NAME CS_T
?PR?CS_T?CS_T SEGMENT CODE
PUBLIC CS_T
RSEG ?PR?CS_T?CS_T
CS_T: PUSH ACC
MOV TH0, #00H
MOV TL0, #00H
MOV A, #4D
SETB TR0
CS_T1: CPL P1.0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ ACC, CS_T1
POP ACC
RET
;
END
;---------------------------------------
; 四位共阳LED动态扫描显示程序
; P0为段码口,P2为位选口(低电平有效)
; 参数为要显示的字符串指针
;---------------------------------------
NAME DISPLAY
?PR?_DISPLAY?DISPLAY SEGMENT CODE
?CO?_DISPLAY?DISPLAY SEGMENT DATA
EXTRN CODE (_DELAY)
PUBLIC _DISPLAY
RSEG ?CO?_DISPLAY?DISPLAY
?_DISPLAY?BYTE:
DISPBIT: DS 1
DISPNUM: DS 1
RSEG ?PR?_DISPLAY?DISPLAY
_DISPLAY: PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
INC DISPNUM
MOV A, DISPNUM
CJNE A, #4D, DISP1
DISP1: JC DISP2
MOV DISPNUM, #00H
MOV DISPBIT, #0FEH
DISP2: MOV A, R1
ADD A, DISPNUM
MOV R0, A
MOV A, @R0
MOV DPTR, #DISPTABLE
MOVC A, @A+DPTR
MOV P0, A
MOV A, DISPNUM
CJNE A, #2D, DISP3
CLR P0.7
DISP3: MOV P2, DISPBIT
MOV R6, #00H
MOV R7, #0AH
LCALL _DELAY
MOV P0, #0FFH
MOV P2, #0FFH
MOV A, DISPBIT
RL A
MOV DISPBIT, A
POP PSW
POP DPL
POP DPH
POP ACC
RET
DISPTABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
; "0", "1", "2", "3","4", "5","6","7", "8","9","A","B","C", "D", "E","F", "-", " "
END
;-------------------------------------
;延时100机器周期*参数(1~65535)
;-------------------------------------
NAME DELAY
?PR?_DELAY?DELAY SEGMENT CODE
PUBLIC _DELAY
RSEG ?PR?_DELAY?DELAY
_DELAY: PUSH ACC ;2
MOV A, R7 ;1
JZ DELA1 ;2
INC R6 ;1
DELA1: MOV R5, #50D ;2
DJNZ R5, $ ;2
DJNZ R7, DELA1 ;2
DJNZ R6, DELA1 ;2
POP ACC ;2
RET ;2
;
END
上一篇:51单片机快热式热水器程序
下一篇:AT89C52时钟程序
史海拾趣
|
汽车安全电子技术名词释疑 什么是BA ASR EBD ESP ■ABS Anti-LockBrakeSystem的英文缩写,意为“防抱死制动系统”。在没有ABS时,汽车在紧急制动时,四个车轮被完全抱死,这时汽车只要在轻微侧向力作用下(比如倾斜的路面或者地上的一块小石头),就会发生侧滑 ...… 查看全部问答> |
|
C8051单片机和Q2BYG403CM驱动器如何接线和控制? 如果采用单脉冲控制(脉冲+方向),则方向信号DR+,DR-和脉冲信号PU+,PU-如何和51单片机接线,接到那个口?同时A+,A-和B+,B-如何接到电机?为什么细分时(驱动器说明书)SW对应MS 时,MS有两个值? 本人是单片机初学者,希望得到各位的帮助,在此 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:28 编辑 AC380V电压经电容降压,桥式整流后给直流电路供电。火线L2经Q2,T2给交流负载供电(负载图中没画),T2检测负载电流,到设定值时,Q1导通,直流电源被拉低,K1释放,交流接触器K2吸合。T1也是检测电流 ...… 查看全部问答> |
|
请问各位大侠,针对不同架构的cpu的vxworks源代码中,是否是采用相同的inflate/deflate解压缩代码啊? 例如,能否调用sparc架构的vxworks代码的inflate代码,解压缩用mips架构的vxworks代码中deflate压缩的文件呢? [ 本帖最后由 茵子 于 2011-9- ...… 查看全部问答> |
|
/*---------------------------------------------------------------------------------------------------------*********************************************************************************************************** 文件名称 :&nbs ...… 查看全部问答> |
|
【项目外包】飞思卡尔32位Power Pc架构MPC5XXX芯片驱动开发 飞思卡尔32位Power Pc架构MPC5XXX芯片驱动开发 项目预算:¥ 1,~100,000 开发周期: 60 天 项目分类: 嵌入式 竞标要求: 项目标签: ...… 查看全部问答> |
|
本人专业是电路与系统,结合自己学习ARM9的情况,我想谈谈学习这款芯片的思路,希望大家一起讨论一起研究。我觉得最初应该先把Sitara当单片机使更合适些,因为电子相关的专业的同学大部分还是希望往驱动固件开发方向发展(这个方向工资也不错,将来 ...… 查看全部问答> |
|
关于用VB6.0编写软件来实现无线遥控atmega128单片机的问题。 各位朋友,大家好! 我用的是ATmega128最小系统板来控制小车的四个电机转动,采用无线遥控模块,模块型号是XL03-232AP2-1收发模块(睿迪无线产的),单片机作为接收端,程序如下: #include #include #define uchar unsigned char #define uin ...… 查看全部问答> |




