全国空气质量指数排名:单片机的程序的理解

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 04:49:13
超声波测距器单片机程序
MCU AT89C51 XAL 12 MHz
Builde by Gavin Hu, 2006
----------------------------------------------*/
# include <reg51.h>
# define uchar unsingned 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 = 0xll ;
IE = 0x80;
while (1)
{
cs_t ( );
delay (1);
testok = 0;
EX0 = 1;
EX0 = 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;
testok = 1;
}

/*超时清除程序(内中断T0)*/
void overtime(void) interrupt 1
{
EX0 = 0;
TR0 = 0;
ET0 = 0;
Testok = 2;
}
;/*文件 2:cs_t.asm*/
;--------------------------------------------------------
;超声发生子程序(12MHz晶振 38.5 Hz)
;--------------------------------------------------------
NAME CS_T
?PR?CS_T?CS_T SEGMENT CODE
PUBLIC CS_T
RSEG ?PR?CS_TCS_T
CS_T: PUSH ACC
MOV TH0, # 00H
MOV TL0, # 00H
MOV A, # 4D
CS_T: CPL P1.0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ ACC,CS_T1
POP ACC
RET
;
END
请赐教一下解说.

太长了吧?!!?!?!!?!?