实现日期时间温度的显示万年历
; ――――――――――――――――――――――――――――――― ; 温度值存放单元 TEMP_ZH EQU 24H ;实时温度值存放单元 TEMPL EQU 25H ;低温度值存放单元 TEMPH EQU 26H ;高温度值存放单元 TEMP_TH EQU 27H ;高温报警值存放单元 TEMP_TL EQU 28H ;低温报警值存放单元 TEMPHC EQU 29H ;存十位数 BCD码 TEMPLC EQU 2AH ;存个位数 BCD码 ;――――――――――――― ;======按键输入引脚定义====== K1 EQU P3.2 K2 EQU P3.3 K3 EQU P3.6 K4 EQU P3.7 ; SPK EQU P3.5 RELAY EQU 2FH ;------------------------------------ ;=====DS1302通信引脚定义===== RST BIT p1.6 SCLK BIT p1.4 IO BIT p1.5 ;=====定义数据存储地址======== DS1302_ADDR DATA 30H ;地址寄存器 DS1302_DATA DATA 31H ;数据寄存器 TIME_YEAR DATA 32H ;年寄存器 TIME_MONT DATA 33H ;月寄存器 TIME_DAY DATA 34H ;天寄存器 WEEK_DATA DATA 35H ;星期寄存器 HOUR DATA 36H ;小时寄存器 MINTUE DATA 37H ;分钟寄存器 SECOND DATA 38H ;秒钟寄存器 ;=========显示数据缓冲地址============ YEAR_HBUF DATA 40H YEAR_LBUF DATA 41H MONT_HBUF DATA 42H MONT_LBUF DATA 43H DAY_HBUF DATA 44H DAY_LBUF DATA 45H WEEK_HBUF DATA 46H WEEK_LBUF DATA 47H HOUR_HBUF DATA 48H HOUR_LBUF DATA 49H MINTUE_HBUF DATA 4AH MINTUE_LBUF DATA 4BH SECOND_HBUF DATA 4CH SECOND_LBUF DATA 4DH ;=============================================== X EQU 2FH ;LCD 地址变量 ;――――――――――――― ;LCD限制引脚 RS EQU P2.4 RW EQU P2.5 E EQU P2.6 ;――――――――――――― FLAG EQU 20H.0 KEY_UD EQU 20H.1 DQ EQU p2.7 ;============= 主程序 ============== MAIN: ACALL SET_LCD ;LCD初始化设置子程序 ACALL SET_1302 ;1302初始化 TOOP: ACALL RESET_1820 ;调用18B20复位子程序 ACALL TEMP_BJ ;显示温度标记“℃“ ACALL MEU_OK ;调用显示“OK“信息子程序 TOOP2: ACALL RE_TEMP ;调用读取温度数据子程序 ACALL SET_DATA ;调用处理显示温度数据子程序 ACALL TEMP_BJ ;显示温度标记子程序 LCALL RD_DS1302 LCALL DATA_BUF LCALL DISPLAY SJMP TOOP2 ;循环 ;--------―― 读取温度数据子程序 --------―― RE_TEMP: ACALL RESET_1820 ;18B20复位子程序 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入子程序 MOV A,#44H ;发出温度转换吩咐 ACALL WRITE_1820 ;调写入子程序 ACALL RESET_1820 ;调复位子程序 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入子程序 MOV A,#0BEH ;发出读温度吩咐 ACALL WRITE_1820 ;写入子程序 ACALL READ_1820 ;调用读取子程序 RET ;-------- 温度数据处理显示子程序---------- SET_DATA: ACALL CONV_TEMP ;处理温度 BCD 码子程序 ACALL DISP_BCD ;显示区 BCD 码温度值刷新子程序 ACALL CONV ;LCD显示子程序 RET ;――――――――――――― ;---------- 处理温度 BCD 码子程序 ---------- CONV_TEMP: