SPEBUFH EQU 30H ; 声速过度缓存高
SPEBUFL EQU 31H ; 声速过度缓存低
HH EQU 32H
HL EQU 33H
LH EQU 34H
LL EQU 35H
VARH EQU 36H
VARL EQU 37H
JSH EQU 38H
JSL EQU 39H
TEMPL EQU 40H ; 存温度低8位
TEMPH EQU 41H ; 存温度高8位
SPEEDH EQU 42H ; 存放声速的百位
SPEEDM EQU 43H ; 存放声速的十位
SPEEDL EQU 44H ; 存放声速的个位
DISBUF EQU 48H ; 距离显示缓冲区 10米位
DISBUF_1 EQU 49H ; 距离显示缓冲区 米位
DISBUF_2 EQU 50H ; 距离显示缓冲区 分米位
DISBU_3 EQU 51H ; 距离显示缓冲区 厘米位
//45H—46H—47H 温度缓存区
//48H—49H—50H—51H 测量距离缓冲区
ORG 0000H
LJMP MAIN
ORG 000BH
NOP
NOP
LJMP TIMER0
/*****************************程序开始*************************************/
MAIN: CLR CNT ; 关超声波
MOV TMOD,#11H ; 定时器0,1为方式1(16位)
MOV TH0, #03CH ; 定时 50MS*2=100MS
优/文^论'文.网http://www.youerw.com
SETB ET0
SETB EA
LCALL INIT
MAIN1: LCALL RD_TEMP ; 读温度
LCALL CONV ; 温度处理
LCALL COMP ; 温度补偿
SETB P1.5
LCALL LCD_DISP
JNB SFLAG,MAIN1
CLR P2.1
JB CSBIN,MAIN1
CLR P1.5
CLR SFLAG ;清100ms标志位,准备下一个周期
CLR TR1
MOV JSH, TH1 ;记录T1高位计数值
MOV JSL, TL1 LCALL WORK ;计算距离子程序
LCALL LCD_DISP ;显 示
CLR P2.1
MOV TH1, #00H ;定时器1重新送初值
MOV TL1, #00H
NOP
NOP
LJMP MAIN1
NOP
NOP
LJMP ERROR
/*************************************************************
;;错误处理
***************************/
ERROR: MOV LCD, #01H ; 清屏
LCALL WR_COM
MOV LCD, #082H
LCALL WR_COM
MOV DPTR,#ERR
LCALL WR_STR
RET
/;;1602液晶屏初始化
***************************************************/
INIT: MOV LCD, #01H
LCALL WR_COM
MOV LCD, #38H
LCALL WR_COM
MOV LCD, #0CH
LCALL WR_COM
MOV LCD, #06H
LCALL WR_COM
MOV DISBUF, #00
MOV DISBUF_1,#00
上一页 [1] [2] [3] [4] [5] [6] [7]