




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(上图硬件原理图可以另存为图片放大了看,清晰度五颗星,放心好了)源程序清单1汇编程序 ORG 0000H ;主程序入口0000 020030 LJMP MAIN ORG 0003H ;外部中断0入口0003 0200D4 LJMP A2D ORG 000BH ;t0入口000B 02007A LJMP SELECT ORG 0013H ;外部中断1入口0013 020062 LJMP KEY ORG 0030H MAIN: ;主程序0030 75A886 MOV IE,#86H ;外部中断0,t0,外部中断1使能0033 7590F6 MOV P1,#0F6H ;键盘初值0036 758C3C MOV TH0,#3CH ;t0赋初值0039 758AB0 MOV TL0,#0B0H003C 758901 MOV TMOD,#01H ;设置t0工作方式为方式1003F D288 SETB IT0 ;打开中断00041 120048 LCALL XUEHAO ;调用显示学号子程序0044 7C1E MOV R4,#30 ;设置t0延时次数,即任务中延时1.5s的功能选择,因为定时器最多计时65536us,所以需要多次计时累计0046 80FE SJMP $ ;踏步命令 0048 9001A7 XUEHAO: MOV DPTR,#XUEHAOTAB ;学号显示子程程序004B 7A03 MOV R2,#3 ;3次刷新004D 7B05 XUEHAO2:MOV R3,#5 ;每次发送5个显示码进数码管004F 7400 XUEHAO1:MOV A,#0 ;a清零,dptr自加来选择需要显示的字型码0051 93 MOVC A,A+DPTR ;查表,给a赋值0052 F599 MOV SBUF,A ;a发送到串行口0054 3099FD JNB TI,$ ;查询串行口发送中断标志位0057 C299 CLR TI ;清除中断标志位,准备进行下一次发送0059 A3 INC DPTR ;dptr加1,指向下一个字型码地址005A DBF3 DJNZ R3,XUEHAO1 ;执行显示5个字型码005C 12018D LCALL DELAY1S ;延迟1s005F DAEC DJNZ R2,XUEHAO2 ;刷新3次 0061 22 RET 0062 12019E KEY: LCALL DELAY10MS ;键盘按键响应程序0065 20B311 JB P3.3,KEY1 ;延迟10ms之后判断是否按键还是按下状态,为按下则返回0068 9001B6 MOV DPTR,#SHUZITAB ;dptr指向数字表首地址006B 1200B4 LCALL JUDGEKEY ;调用判断键值子程序006E 04 INC A ;键值加1调用字型码(因为硬件显示的数字比键值大1)006F 93 MOVC A,A+DPTR ;查表得字型码0070 F599 MOV SBUF,A ;发送a到串行口进行显示0072 3099FD JNB TI,$ ;0075 C299 CLR TI0077 D28C SETB TR0 ;打开定时器t00079 32 KEY1: RETI ;中断返回 SELECT: ;长按1.5s功能选择程序007A 20B319 JB P3.3,SELECTOUT ;判断按键是否按下,否则返回007D DC17 DJNZ R4,SELECTOUT ;判断是否达到1.5s,否则r4减1返回(r4记录中断次数)007F 1200B4 LCALL JUDGEKEY ;调用判断键值子程序0082 B40003 CJNE A,#0,SELECT1 ;得到a的键值,判断功能0085 12009D LCALL D2A0088 B40103 SELECT1: CJNE A,#1,SELECT2008B 120048 LCALL XUEHAO008E B40303 SELECT2: CJNE A,#3,SELECT30091 1200CA LCALL ATOD0094 7C1E SELECT3: MOV R4,#30 ;r4重新赋初值0096 758C3C SELECTOUT:MOV TH0,#3CH ;定时计数器重新赋初值0099 758A0B MOV TL0,#0BH009C 32 RETI ;中断返回 009D 900FFF D2A: MOV DPTR,#0FFFH ;数模转换程序00A0 74C8 MOV A,#20000A2 7A64 MOV R2,#10000A4 14 D2A1: DEC A00A5 F0 MOVX DPTR,A00A6 B400FB CJNE A,#0,D2A100A9 120195 LCALL DELAY3MS00AC 04 D2A2: INC A00AD F0 MOVX DPTR,A00AE B4C8FB CJNE A,#200,D2A200B1 DAF1 DJNZ R2,D2A100B3 22 RET 00B4 7800 JUDGEKEY: MOV R0,#0 ;键值判断程序00B6 7400 MOV A,#000B8 309402 JNB P1.4,JP100BB 7801 MOV R0,#100BD 7590A7 JP1:MOV P1,#0A7H00C0 309002 JNB P1.0,JP200C3 7402 MOV A,#200C5 28 JP2:ADD A,R000C6 7590F6 MOV P1,#0F6H00C9 22 RET 00CA E4 ATOD: CLR A ;模数转换程序00CB D2A8 SETB EX0 ;打开中断000CD 90FFFE MOV DPTR,#0FFFEH ;dptr指向adc0808首地址00D0 F0 MOVX DPTR,A ;启动adc080800D1 7814 MOV R0,#20 ;重新设定采样次数00D3 22 RET ;返回 A2D: ;模数转换中断响应程序00D4 90FFFE MOV DPTR,#0FFFEH00D7 D2D4 A2D1: SETB RS1 ;打开第三组00D9 E0 MOVX A,DPTR ;取得adc0808反馈值00DA F5F0 MOV B,A ;把a中的值倒置(因为采样的时候是从高位到低位倒置的)00DC 7400 MOV A,#000DE 30F702 JNB B.7,SS100E1 D2E0 SETB ACC.000E3 30F602 SS1:JNB B.6,SS200E6 D2E1 SETB ACC.100E8 30F502 SS2:JNB B.5,SS300EB D2E2 SETB ACC.200ED 30F402 SS3:JNB B.4,SS400F0 D2E3 SETB ACC.300F2 30F302 SS4:JNB B.3,SS500F5 D2E4 SETB ACC.400F7 30F202 SS5:JNB B.2,SS600FA D2E5 SETB ACC.500FC 30F102 SS6:JNB B.1,SS700FF D2E6 SETB ACC.60101 30F002 SS7:JNB B.0,SS80104 D2E7 SETB ACC.70106 75F033 SS8:MOV B,#51 ;以下将得到数值转换成bcd码,因为a的范围是0255,电压范围是05,所以将得到值除以51得到最高位整数值0109 84 DIV AB ;然后第二位再乘10,除以51,得到第二位,以此类推010A FB MOV R3,A010B E5F0 MOV A,B010D 75F00A MOV B,#100110 A4 MUL AB0111 FA MOV R2,A0112 E5F0 MOV A,B0114 B4000A CJNE A,#00,LP10117 EA MOV A,R20118 75F033 MOV B,#51011B 84 DIV AB011C FA MOV R2,A011D E5F0 MOV A,B011F 800B SJMP LP20121 EA LP1: MOV A,R20122 04 INC A0123 75F033 MOV B,#510126 84 DIV AB0127 2405 ADD A,#50129 FA MOV R2,A012A E5F0 MOV A,B012C 75F00A LP2:MOV B,#10012F A4 MUL AB0130 F9 MOV R1,A0131 E5F0 MOV A,B0133 B40008 CJNE A,#0,LP30136 E9 MOV A,R10137 75F033 MOV B,#51013A 84 DIV AB013B F9 MOV R1,A013C 8009 SJMP LP4013E E9 LP3:MOV A,R1013F 04 INC A0140 75F033 MOV B,#510143 84 DIV AB0144 2405 ADD A,#50146 F9 MOV R1,A0147 120157 LP4:LCALL DIANYA014A C2D4 CLR RS1014C 90FFFE MOV DPTR,#0FFFEH014F F0 MOVX DPTR,A ;转换完成,最高位,次高位,最低位分别放在r3,r2,r10150 D882 DJNZ R0,A2D0152 7814 MOV R0,#200154 C2A8 CLR EX00156 32 RETI 0157 74FF DIANYA: MOV A,#0ffH ;显示电压程序0159 F599 MOV SBUF,A ;显示黑015B 3099FD JNB TI,$015E C299 CLR TI0160 74FF MOV A,#0FFH0162 F599 MOV SBUF,A0164 3099FD JNB TI,$0167 C299 CLR TI0169 9001B6 MOV DPTR,#SHUZITAB016C EB MOV A,R3016D 93 MOVC A,A+DPTR016E 547F ANL A,#7FH0170 F599 MOV SBUF,A0172 3099FD JNB TI,$0175 C299 CLR TI0177 EA MOV A,R20178 93 MOVC A,A+DPTR0179 F599 MOV SBUF,A017B 3099FD JNB TI,$017E C299 CLR TI0180 E9 MOV A,R10181 93 MOVC A,A+DPTR0182 F599 MOV SBUF,A0184 3099FD JNB TI,$0187 C299 CLR TI0189 12018D LCALL DELAY1S018C 22 RET 018D 7D64 DELAY1S: MOV R5,#100 ;延时一秒子程序018F 12019E DELAY1S1: LCALL DELAY10MS0192 DDFB DJNZ R5,DELAY1S10194 22 RET 0195 7E06 DELAY3MS: MOV R6,#6 ;延时一秒子程序0197 7FFA DELAY3MS1:MOV R7,#2500199 DFFE DJNZ R7,$019B DEFA DJNZ R6,DELAY3MS1019D 22 RET 019E 7E14 DELAY10MS: MOV R6,#20 ;延时一秒子程序01A0 7FFA DELAY10MS1:MOV R7,#25001A2 DFFE DJNZ R7,$01A4 DEFA DJNZ R6,DELAY10MS101A6 22 RET 01A7 FFFFF7 01AA F7F7 XUEHAOTAB:DB 0FFH,0FFH,0F7H,0F7H,0F7H ;学号显示表01AC FBFBAB 01AF A7B3 DB 0FBH,0FBH,0ABH,0A7H,0B3H01B1 F9F9C0 01B4 82B0 DB 0F9H,0F9H,0C0H,82H,0B0H 01B6 C0F9A4 01B9 B09992 01BC 82F880 01BF 90 SHUZITAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数字表 符号 值 类型 A2D = 00D4H CODE 标号 A2D1 = 00D7H CODE 标号 AC = 00D6H CONST 常量 ACC = 00E0H CONST 常量 ATOD = 00CAH CODE 标号 B = 00F0H CONST 常量 CY = 00D7H CONST 常量 D2A = 009DH CODE 标号 D2A1 = 00A4H CODE 标号 D2A2 = 00ACH CODE 标号 DELAY10MS = 019EH CODE 标号 DELAY10MS1 = 01A0H CODE 标号 DELAY1S = 018DH CODE 标号 DELAY1S1 = 018FH CODE 标号 DELAY3MS = 0195H CODE 标号 DELAY3MS1 = 0197H CODE 标号 DIANYA = 0157H CODE 标号 DPH = 0083H CONST 常量 DPL = 0082H CONST 常量 EA = 00AFH CONST 常量 ES = 00ACH CONST 常量 ET0 = 00A9H CONST 常量 ET1 = 00ABH CONST 常量 EX0 = 00A8H CONST 常量 EX1 = 00AAH CONST 常量 F0 = 00D5H CONST 常量 F1 = 00D1H CONST 常量 IE = 00A8H CONST 常量 IE0 = 0089H CONST 常量 IE1 = 008BH CONST 常量 IP = 00B8H CONST 常量 IT0 = 0088H CONST 常量 IT1 = 008AH CONST 常量 JP1 = 00BDH CODE 标号 JP2 = 00C5H CODE 标号 JUDGEKEY = 00B4H CODE 标号 KEY = 0062H CODE 标号 KEY1 = 0079H CODE 标号 LP1 = 0121H CODE 标号 LP2 = 012CH CODE 标号 LP3 = 013EH CODE 标号 LP4 = 0147H CODE 标号 MAIN = 0030H CODE 标号 OV = 00D2H CONST 常量 P = 00D0H CONST 常量 P0 = 0080H CONST 常量 P1 = 0090H CONST 常量 P2 = 00A0H CONST 常量 P3 = 00B0H CONST 常量 PCON = 0087H CONST 常量 PS = 00BCH CONST 常量 PSW = 00D0H CONST 常量 PT0 = 00B9H CONST 常量 PT1 = 00BBH CONST 常量 PX0 = 00B8H CONST 常量 PX1 = 00BAH CONST 常量 RB8 = 009AH CONST 常量 REN = 009CH CONST 常量 RI = 0098H CONST 常量 RS0 = 00D3H CONST 常量 RS1 = 00D4H CONST 常量 SBUF = 0099H CONST 常量 SCON = 0098H CONST 常量 SELECT = 007AH CODE 标号 SELECT1 = 0088H CODE 标号 SELECT2 = 008EH CODE 标号 SELECT3 = 0094H CODE 标号 SELECTOUT = 0096H CODE 标号 SHUZITAB = 01B6H CODE 标号 SM0 = 009FH CONST 常量 SM1 = 009EH CONST 常量 SM2 = 009DH CONST 常量 SP = 0081H CONST 常量 SS1 = 00E3H CODE 标号 SS2 = 00E8H CODE 标号 SS3 = 00EDH CODE 标号 SS4 = 00F2H CODE 标号 SS5 = 00F7H CODE 标号 SS6 = 00FCH CODE 标号 SS7 = 0101H CODE 标号 SS8 = 0106H CODE 标号 TB8 = 009BH CONST 常量 TCON = 0088H CONST 常量 TF0 = 008DH CONST 常量 TF1 = 008FH CONST 常量 TH0 = 008CH CONST 常量 TH1 = 008DH CONST 常量 TI = 0099H CONST 常量 TL0 = 008AH CONST 常量 TL1 = 008BH CONST 常量 TMOD = 0089H CONST 常量 TR0 = 008CH CONST 常量 TR1 = 008EH CONST 常量 XUEHAO = 0048H CODE 标号 XUEHAO1 = 004FH CODE 标号 XUEHAO2 = 004DH CODE 标号 XUEHAOTAB = 01A7H CODE 标号 公有符号: 97 私有符号: 0以下程序为wave输入源程序,不带机器码,方便同学复制粘贴体验神奇效果ORG 0000H ;主程序入口LJMP MAINORG 0003H ;外部中断0入口LJMP A2DORG 000BH ;t0入口LJMP SELECTORG 0013H ;外部中断1入口LJMP KEYORG 0030HMAIN: ;主程序 MOV IE,#86H ;外部中断0,t0,外部中断1使能 MOV P1,#0F6H ;键盘初值 MOV TH0,#3CH ;t0赋初值 MOV TL0,#0B0H MOV TMOD,#01H ;设置t0工作方式为方式1 SETB IT0 ;打开中断0 LCALL XUEHAO ;调用显示学号子程序 MOV R4,#30 ;设置t0延时次数,即任务中延时1.5s的功能选择,因为定时器最多计时65536us,所以需要多次计时累计 SJMP $ ;踏步命令XUEHAO: MOV DPTR,#XUEHAOTAB ;学号显示子程程序 MOV R2,#3 ;3次刷新XUEHAO2:MOV R3,#5 ;每次发送5个显示码进数码管XUEHAO1:MOV A,#0 ;a清零,dptr自加来选择需要显示的字型码 MOVC A,A+DPTR ;查表,给a赋值 MOV SBUF,A ;a发送到串行口 JNB TI,$ ;查询串行口发送中断标志位 CLR TI ;清除中断标志位,准备进行下一次发送 INC DPTR ;dptr加1,指向下一个字型码地址 DJNZ R3,XUEHAO1 ;执行显示5个字型码 LCALL DELAY1S ;延迟1s DJNZ R2,XUEHAO2 ;刷新3次 RETKEY: LCALL DELAY10MS ;键盘按键响应程序 JB P3.3,KEY1 ;延迟10ms之后判断是否按键还是按下状态,为按下则返回 MOV DPTR,#SHUZITAB ;dptr指向数字表首地址 LCALL JUDGEKEY ;调用判断键值子程序 INC A ;键值加1调用字型码(因为硬件显示的数字比键值大1) MOVC A,A+DPTR ;查表得字型码 MOV SBUF,A ;发送a到串行口进行显示 JNB TI,$ ; CLR TI SETB TR0 ;打开定时器t0KEY1: RETI ;中断返回SELECT: ;长按1.5s功能选择程序 JB P3.3,SELECTOUT ;判断按键是否按下,否则返回 DJNZ R4,SELECTOUT ;判断是否达到1.5s,否则r4减1返回(r4记录中断次数) LCALL JUDGEKEY ;调用判断键值子程序 CJNE A,#0,SELECT1 ;得到a的键值,判断功能 LCALL D2ASELECT1: CJNE A,#1,SELECT2 LCALL XUEHAOSELECT2: CJNE A,#3,SELECT3 LCALL ATODSELECT3: MOV R4,#30 ;r4重新赋初值SELECTOUT:MOV TH0,#3CH ;定时计数器重新赋初值 MOV TL0,#0BH RETI ;中断返回D2A: MOV DPTR,#0FFFH ;数模转换程序 MOV A,#200 MOV R2,#100 D2A1: DEC A MOVX DPTR,A CJNE A,#0,D2A1 LCALL DELAY3MS D2A2: INC A MOVX DPTR,A CJNE A,#200,D2A2 DJNZ R2,D2A1 RETJUDGEKEY: MOV R0,#0 ;键值判断程序 MOV A,#0 JNB P1.4,JP1 MOV R0,#1 JP1:MOV P1,#0A7H JNB P1.0,JP2 MOV A,#2 JP2:ADD A,R0 MOV P1,#0F6H RETATOD: CLR A ;模数转换程序 SETB EX0 ;打开中断0 MOV DPTR,#0FFFEH ;dptr指向adc0808首地址 MOVX DPTR,A ;启动adc0808 MOV R0,#20 ;重新设定采样次数 RET ;返回A2D: ;模数转换中断响应程序 MOV DPTR,#0FFFEHA2D1: SETB RS1 ;打开第三组 MOVX A,DPTR ;取得adc0808反馈值 MOV B,A ;把a中的值倒置(因为采样的时候是从高位到低位倒置的) MOV A,#0 JNB B.7,SS1 SETB ACC.0 SS1:JNB B.6,SS2 SETB ACC.1 SS2:JNB B.5,SS3 SETB ACC.2 SS3:JNB B.4,SS4 SETB ACC.3 SS4:JNB B.3,SS5 SETB ACC.4 SS5:JNB B.2,SS6 SETB ACC.5 SS6:JNB B.1,SS7 SETB ACC.6 SS7:JNB B.0,SS8 SETB ACC.7 SS8:MOV B,#51 ;以下将得到数值转换成bcd码,因为a的范围是0255,电压范围是05,所以将得到值除以51得到最高位整数值 DIV AB ;然后第二位再乘10,除以51
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车转让协议书格式3篇
- 实施财务监管 降低合同执行风险4篇
- 民爆安全培训课题课件
- 民法概念课件
- 船舶四小证考试题及答案
- 测量学考试题及答案误差
- 小米:新质生产力代表企业探析
- 民族风情课件
- 新质生产力的关键材料需求分析
- 建筑行业新质生产力解析
- 2025秋季第一学期开学典礼德育主任的发言稿:让责任与品格同行让梦想与行动齐飞
- 吴伯萧名篇阅读理解与教学设计
- 仓库基础知识培训教材课件
- 曲臂式高空作业车专项施工方案
- 2025秋人教统编版二年级语文上册第一单元语文园地一【教案】
- SOP考试题及答案
- 高职院校实训室管理办法
- 电力施工安全管理办法
- 危险化学品生产许可证实施细则(一)(危险化学品无机产品部分)
- 德瑞斯D600变频器说明书
- 2025-2030年中国锂电池回收行业市场深度调研及前景趋势与投资研究报告
评论
0/150
提交评论