版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. ORG 0000H AJMP MAIN; BUF EQU 40H ;显示缓冲区 MOTATA EQU 50H ;AD0809数据存放于此 WH EQU 48H ;温度上限数据存放区 WL EQU 58H ;温度下限数据存放区 BUFF1S EQU
2、38H; BUFF1MS EQU 39H; BUFF5S EQU 3AH; INNAL EQU 3CH; ALARMBUF EQU 33H BUFFH EQU 31H ;八路LED报警信号 红灯 BUFFL
3、; EQU 32H ;八路LED报警信号 绿灯 BACK EQU 34H ;利用与BUF地址的重复修改路数 CHANNEL EQU 35H TEMPBUF EQU 36H READ_AD BIT 30H ;是否要读写AD0809的标志位 DISPIN BIT 31H;
4、0; SETWARN BIT 32H SOLIDISP BIT 33H ENTER BIT P1.2 SETH BIT 35H SETL BIT 36H SETIN B
5、IT P1.3 ABYTEIN BIT p1.1 ORG 0003H AJMP INT_0; ORG 000BH LJMP INT_T0 ORG 0100HMAIN: MOV SP, #70H ;设置堆栈
6、位置 SETB READ_AD ;初始化标志位 SETB EA 开总中断
7、 CLR SETWARN ;清除温度设置标志位 SETB SETIN 当其为0时表示要进行通道数采集 LCALL
8、; INITWARN ;初始化温度上下限 LCALL INIT_2 初始化2#工作寄存器区 ;主循环,启动ADC0809,从第一个通道开始读取LOOP: JNB READ_AD,DIS
9、 ;若不读AD0809,则调显示,次标志位也表示1s延时结束 ;延时已完毕,则计算要显示的温度路数及温度值送缓冲区 LCALL WA
10、RN 报警 CLR READ_AD 清楚标志位 LCALL READ
11、0; 读取一次AD0809 LCALL DLY1MS 此处加1ms的延时,否则数码管会因中断的存在而产生闪动 LCALL ADJUST &
12、#160; 调整显示;在此完成键盘检测及显示任务 DIS: LCALL DISPLAY; LCALL KEYCHK 调键盘检测子程序 CJNE A,#0FFH, AKEY 若有键按下,则跳转
13、; LJMP LOOP ;若没有则循环AKEY: LCALL KEYFUNC; CJNE A,#0FFH,CALLRPD 验证按下的键是否为数字键,若是则处理输入
14、0; LJMP LOOP 不为数字键则返回循环CALLRPD: LCALL KEYRPD; SJMP LOOP; *初始化2#工作寄存器区*INIT_2: PUSH PSW
15、 初始化2号工作寄存器区 SETB RS1; CLR RS0 选择2号工作寄存器区
16、60; MOV R2, #00H 存放要显示的路数 CLR DISPIN 初始化路显示标志位; MOV
17、; R0, #MOTATA R0充当指向MOTATA的指针 POP PSW; RET; *调整指针*PADJUST:ONADJUST: DJNZ R2,INADJUST; RET;返回INADJUST: IN
18、C R0; SJMP ONADJUST; *计算并调整显示缓存区的数据*ADJUST: PUSH PSW ;保护 SETB RS1; CLR RS0
19、; 选择2号工作寄存器区 CJNE R2,#08H,NE08; GE08: MOV R2,#00H; MOV R0,#MOTATA; SJMP LESS08; NE08: JNC GE08;LESS08: JB SET
20、WARN, DISPWARN 若在设定温度,则也不调整显示 JB SOLIDISP, ADJEND ;若为固定显示,则跳过调整 JB DISPIN,DLY_5S ;若有键盘值输入,则延时5秒来暂时固定显示
21、160; INC R0 调整R0,使其指向下一个要显示的温度值地址 INC R2
22、60; ;调整R2 mov channel,r2; SJMP ADJEND;DLY_5S: DJNZ BUFF5S,ADJEND; CLR DISPIN;
23、LJMP ADJENDDISPWARN: JB SETH,DISHIGH 若在调整上限值则跳转到上限温度显示 JB SETL,DISLOW ;若在调整下限值则跳转到下限温度显示 SJMP
24、; ADJEND 若不在调整则显示输入路数的当前检测温度值DISLOW: MOV R0,#WL 将指针调整到温度上限存放区 SJMP ADAPT
25、60; 跳转到指针调整处DISHIGH:MOV R0,#WH 将指针调整到温度下限存放区ADAPT: MOV R2,CHANNEL 调整R2的值为通道数
26、; LCALL PADJUST 指针指向R2ADJEND: LCALL LOADTEMP ;将当前指针指向数据放到缓冲区 POP PSW;
27、 RET; * 将当前指针指向数据放到缓冲区*LOADTEMP: LCALL COMPUTE 调用COMPUTE得到要显示的当前温度值 MOV R1,#BUF; MOV A,channel;
28、60; MOV R1,A 将路数送入显示缓冲区 INC R1
29、160; 调整到要显示温度值的缓冲区 JB SETH,DISPH 若设定温度上限,则显示H JB SETL,DISPL
30、; 若设定温度下限,则显示L Mov a,#10h 消隐 SJMP DISP2DISPH: MOV A,#11H
31、SJMP DISP2DISPL: MOV A,#12HDISP2: mov r1,a; INC R1; MOV A,R5; ANL A,#0FH; MOV
32、160; R1,A 最低位 INC R1; MOV A,R5; ANL A,#0F0H;
33、0; SWAP A; MOV R1,A 次低位 ,应当在此处添加小数点 INC R1; &
34、#160; MOV A,R4; ANL A,#0FH; MOV R1,A 次高位 INC
35、 R1; MOV A,R4; ANL A,#0F0H; SWAP A; MOV R1,A
36、0; 最高位 RET; *读取一次0809的内容*READ: MOV R6,#08H ;用中断的方式读取一次AD0809 MOV R0,#MOTATA
37、; 0号工作寄存器区 MOV DPTR,#0FFFEH A0作为地址 MOV A,#00H
38、; ;表示先检测第一个通道 MOV INNAL,A 将检测的路数保存 MOVX DPTR,A
39、0; 开启ADC0809 SETB EX0 ;开外部中断0 RET
40、; 若已读取完毕,则返回 *显示子程序*;要显示的数据入口为BUF(6位);1号工作寄存器区DISPLAY: PUSH PSW ;压栈保护 SETB RS0;&
41、#160; CLR RS1 ;切换工作寄存器区到 1 MOV R0,#BUF MOV R7,#06H
42、0; MOV R1,#01HNEXTDIS: MOV A,R0 MOV DPTR,#TABLE MOVC A,A+DPTR ;取段码 CJNE R7,#03H,
43、NODIP ;显示小数点 ANL A,#07FHNODIP: MOV DPTR,#0FFDCH MOVX DPTR,A ;送段码 MOV D
44、PTR,#0FFDDH MOV A,R1 MOVX DPTR,A ;送位码 RL A MOV R1,A &
45、#160; LCALL DLY1MS INC R0 ;调整显示 DJNZ R7,NEXTDIS; POP PSW;
46、; RET;*延时1ms*DLY1MS: MOV BUFF1MS,#0F9H DJNZ BUFF1MS,$ RET *按键检查子程序*KEYCHK:MOV A,#00H ;查看是否有键按下
47、; MOV DPTR,#0FFDDH MOVX DPTR,A MOV DPTR,#0FFDEH MOVX A,DPTR CPL A
48、;ANL A,#0FH JNZ TEST ;若有键按下则检测,无则返回。 MOV A,#0FFH RETTEST: LCALL KEYTEST MOV BACK,A
49、; LCALL DISPLAY LCALL KEYTEST CJNE A,BACK,NOKEYD WAIT: LCALL DISPLAY; MOV&
50、#160; A,#00H ;等待键抬起 MOV DPTR,#0FFDDH MOVX DPTR,A MOV DPTR,#0FFDEH MOVX A,DPT
51、R CPL A ANL A,#0FH JNZ WAIT ;若键未抬起,则继续等待 MOV A,BACK ;将检测到的键值送给A &
52、#160; SJMP CHKENDNOKEYD: MOV A,#0FFHCHKEND: RET;*按键检测子程序*KEYTEST: MOV R0,#0FEH MOV R1,#00H MOV R2,#08HNEXTL: MOV A,R0
53、60; MOV DPTR,#0FFDDH MOVX DPTR,A MOV DPTR,#0FFDEH MOVX A,DPTR
54、160; CPL A ANL A,#0FH JNZ KEYDWN ;看按下的键是否在当前列 DJNZ R2,GOSCAN 看是否扫描完毕,若
55、没有则调整继续扫描 SJMP TSTEND 若扫描完毕,则返回。GOSCAN: MOV A,R0 RL A MOV R0,A &
56、#160; INC R1 SJMP NEXTLKEYDWN: MOV R3,#00HLL0: RRC A JC LL1 INC R3
57、0; SJMP LL0LL1: MOV A,R3 MOV B,A MOV A,#8 MUL AB
58、60; ADD A,R1 ;A中返回的为按下的键的代码 RETTSTEND: MOV A,#0FFH RET *延时1s*DLY_1S: MOV TMOD,#01H; SETB ET0; &
59、#160; MOV TH0,#0F0H ;10ms MOV TL0,#0D8H; MOV buff1s,#100; SETB TR0; RET;*定时器T0中断服务程序*INT_T0:CLR TR0 ;关计数器 DJ
60、NZ buff1s ;NEXT_10MS;若不到1s继续 SETB READ_AD;若到了,则置标志位 cpl p1.0; clr et0; SJMP T0_END;NEXT_10MS: MOV TMOD,#01H MOV TH0,#0F0H&
61、#160; ;定时10ms MOV TL0,#0D8H SETB TR0T0_END: RETI *计算子程序,完成一路计算*COMPUTE: MOV A,R0; MOV B,#04H ;测得的温度数乘以4 MUL AB; MOV R6,B;
62、 MOV R7,A; LCALL HB2 ;调用子程序转化为压缩BCD码,R4,R5为出口 RET;HB2: CLR ;BCD码初始化 MOV R4,A MOV R5,A MOV R3,#10H ;转换双字节十六进制整数HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中
63、60; RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ;BCD码带进位自身相加,相当于乘2 ADDC A,R5 DA A ;十进制调整 MOV
64、 R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R3,HB3 ;处理完16bit RET;*报警子程序*WARN: MOV R0,#MOTATA ;R0指向MOTATA MOV R1,#W
65、H ; R1指向WH MOV R7,#08H ;R7为循环次数WLOOP:MOV A,R0 MOV ALARMBUF,R1 ;与指令相适应的必要中转 CJNE A,ALARMBUF,REDGEHIGH: CLR C ;红灯信号 &
66、#160; LJMP NEXTREDRED : JNC GEHIGH ;读入数值比预设大 SETB CNEXTRED:MOV A,BUFFH RLC A ;压入红灯信号 MOV BUFFH,A
67、 MOV A,R1 ;调整R1指向WL ADD A,#10H MOV R1,A MOV ALARMBUF,R1 MOV A,R0 C
68、JNE A,ALARMBUF,GREENLSLOW: CLR C ;绿灯信号 LJMP NEXTGRNGREEN: JC LSLOW ;读入数值比预设小 SETB CNEXTGRN:MOV A,BUFFL
69、 RLC A MOV BUFFL,A MOV A,R1 SUBB A,#10H MOV R1,A INC R1
70、; INC R0 DJNZ R7,WLOOPMOV A,BUFFH ;将红灯报警信息送出MOV DPTR,#0FBFFH ;红灯信号对应地址p2.2MOVX DPTR,AMOV A,BUFFL ;将绿灯报警信息送出MOV DPTR,#0F7FFH ;绿灯信号对应地址p2.3MOVX DPTR,ARET;*键位调整程序*KEYFUNC: MOV DPTR,#KEYTABLE
71、; ANL A,#0FH ;消除键位干扰 MOVC A,A+DPTR ;调整跳转位置 CJNE A,#0AH,K1 MOV A,#0FFH SETB
72、 SETIN SETB SETH ;表示要设定温度报警上限值 CLR SETL RET; K1: CJNE A,#04H,K2 MOV
73、 A,#0FFH SETB SETIN SETB SETL ;表示要设定温度报警下限值 CLR SETH RET K2: CJNE A,
74、#0FH,K3 MOV A,#0FFH JB SETWARN,ENDISP SETB SETWARN CLR ABYTEIN
75、 CLR SETH CLR SETL CLR ENTER RETENDISP: CLR SETWARN; CLR SETH;
76、; CLR SETL; RET; K3: CJNE A,#0EH,K4 MOV A,#0FFH JB SOLIDISP,ENSOLID; SETB SOLIDI
77、SP RETENSOLID: CLR SOLIDISP RET K4: CJNE A,#0CH,K5 MOV A,#0FFH; CLR SETIN;
78、; CLR SETH; CLR SETL; RET; K5: CJNE A,#0DH,K6 MOV A,#0FFH SETB
79、 ENTER RET; K6: RETKEYTABLE: db 07h,04h,08h,05h,09h,06,0Ah 0, 1 ,2 ,3 ,4 ,5 ,6 &
80、#160; db 04h,01h,00h,02h,0Fh,03h,0Eh,0Ch,0Dh ; 7 ,8 ,9 ,10 ,11,12, 13, 14 ,15;*实现对各个设定键的响应*KEYRPD: JB SETWARN,WARNSET ;根据SOLIDISP的值调显示
81、0; PUSH PSW; SETB RS1; CLR RS0 ;选择2号工作寄存器区 MOV R0,#MOTATA; MOV CHANNEL,A ;将读入的值放入通道缓冲
82、; MOV R2,A; MOV BACK,A; MOV BUF,A; LCALL PADJUST ;调整R0,使其指向R2通道的温度值 SETB DISPIN ;5s计时的标志位 &
83、#160; MOV BUFF5S,#05H ;初始化5s计时 MOV R2,CHANNEL; POP PSW; RET ;调整完毕,返回WARNSET:JNB SETIN,INSET ;若未设定通道,先进行设定
84、; LJMP SETTEMP ;若已设定则跳转到温度设定处INSET: MOV CHANNEL,A RETSETTEMP:JB SETH,HIGHSET ;设定温度警告上限 JB SETL,LOWSET ;设定温度警告下限 RETHI
85、GHSET: LCALL READTEMP MOV R0,#WH ;调整R0使其指向温度上限存储区 LJMP STORESETLOWSET: LCALL READTEMP MOV R0,#WL ; 调整R0使其指向温度下限存储区STORESET:MOV&
86、#160; A ,TEMPBUF; LCALL COMPACT ;将输入的数转化为16进制数存储(未改变R0) MOV R2,CHANNEL ;送入要调整到的位置 LCALL PADJUST ;调用调整子程序 MOV R0 ,A ; 将温度值送到相应的位置 RETREADTEMP: JB ABYTEIN,READLOW;若已经有一位读入则读取低位READHIGH: SWAP A; MOV&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届江苏省南京市建邺区中考英语最后一模试卷含答案
- 2026届天津市滨海新区名校中考英语考前最后一卷含答案
- 人教版高二生物下册第一次月考含答案及解析
- 幼儿园小班语言课《菲菲生气了》情绪管理教学
- 6.2 等差数列教学设计-2025-2026学年中职数学基础模块下册人教版
- 活动- 风筝的故事说课稿-2025-2026学年小学综合实践活动四年级上册沪科黔科版
- 小学信息技术青岛版四年级下册第4课 图文并茂显身手教案及反思
- 2025年储能电池管理系统自动化测试设备
- Unit 1 New year教学设计-2025-2026学年小学英语一年级下册牛津(绿色上教版)
- 中级往年试题及答案
- ISO14001-2026与ISO14001-2015版核心差异解析及应对
- 成都产业投资集团有限公司2026“蓉漂人才荟”城市行4月社会招聘笔试备考试题及答案解析
- 2026广东广州南方投资集团有限公司社会招聘49人备考题库及答案详解(真题汇编)
- 廉洁风险防范培训
- 2026年物业管理师职业技能考试题及答案
- 汽车喷漆房安全生产制度
- 中华联合保险集团股份有限公司行测笔试题库2026
- 2025年盘锦事业单位真题
- 校车驾驶员培训课件
- 2025年国企党建工作岗笔试题目及答案
- 混凝土路面清除施工方案
评论
0/150
提交评论