南昌大学单片机课程设计程序.doc_第1页
南昌大学单片机课程设计程序.doc_第2页
南昌大学单片机课程设计程序.doc_第3页
南昌大学单片机课程设计程序.doc_第4页
南昌大学单片机课程设计程序.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ORG 0000H0000 020030 LJMP MAIN ORG 0003H0003 0200F4 LJMP IN_INT0 ;INT0中断入口 ORG 0013H 0013 02006C LJMP INT1_IN ;INT1中断入口 ORG 0030H0030 75521E MAIN: MOV 52H,#30 ;设定定时循环次数0033 758130 MOV SP,#30H0036 7590F0 MOV P1,#0F0H0039 758910 MOV TMOD,#10H ;选择定时器T1方式1003C 758D3C MOV TH1,#3CH ;一次计时50ms的初值003F 758BB0 MOV TL1,#0B0H0042 D288 SETB IT0 ;设置外部中断0为电平触发方式0044 D28A SETB IT1 ;设置外部中断1为边沿触发方式0046 75A885 MOV IE,#85H ;允许外部中断0和外部中断10049 D2BA SETB PX1 ;设置外部中断1为高优先级中断004B 12004E LCALL NEXT1 ;循环滚动学号004E 9001EC NEXT1:MOV DPTR, #TAB20051 7F07 L3:MOV R7,#07H ;显示7个数字0053 7E03 MOV R6,#03H0055 7830 MOV R0,#30H0057 E4 CLR A0058 E6 L4:MOV A,R00059 93 MOVC A,A+DPTR ;取相应的字形代码005A F599 MOV SBUF, A ;发送字形代码005C C299 CLR TI ;清除串行发送中断标志005E A3 INC DPTR005F 08 INC R00060 DFF6 DJNZ R7,L40062 1201CD LCALL DELAY10065 DEF1 DJNZ R6,L40067 1201CD LCALL DELAY1 ;每次完成显示后延时006A 80E2 SJMP NEXT1 ;循环发送,实现滚动效果 006C D2D3 INT1_IN: SETB RS0 ;保护第零组工作寄存器006E C0E0 PUSH ACC ;保护现场0070 C083 PUSH DPH0072 C082 PUSH DPL0074 1201B5 LCALL DELAY2 ;去除抖动,10ms延时0077 30B303 JNB P3.3,LP1007A 020186 LJMP OUT007D C293 LP1: CLR P1.3 ;若为真按键,开蜂鸣器007F D28E SETB TR1 ;开始计时0081 12018F LCALL KEY ;确定键值0084 208F05 JB TF1,LP2 ;判断是长按键还是短按键0087 20B317 JB P3.3,LP4008A 80F1 SJMP LP1 ;判断按键是否长于1.5秒008C 758D3C LP2: MOV TH1,#3CH008F 758BB0 MOV TL1,#0B0H0092 20B3E8 JB P3.3,LP10095 D552E5 DJNZ 52H,LP10098 30B3FD JNB P3.3,$009B C299 CLR TI009D D293 SETB P1.3009F 8026 SJMP LONG00A1 1201CD LP4: LCALL DELAY100A4 30B3D6 JNB P3.3,LP1 ;按键若真松开就停蜂鸣器00A7 D293 SETB P1.300A9 C28E CLR TR1 ;进入短按键程序,停止计时并恢复初值00AB 758D3C MOV TH1,#3CH00AE 758BB0 MOV TL1,#0B0H00B1 75521E MOV 52H,#3000B4 755107 MOV 51H,#07H00B7 E550 MOV A,50H ;取所按的键值00B9 9001E8 MOV DPTR,#TAB1 ;在七个数码管里显示该键值00BC 93 MOVC A,A+DPTR 00BD F599 LOOP: MOV SBUF,A00BF 1099FD JBC TI,$00C2 D551F8 DJNZ 51H,LOOP00C5 80FE SJMP $00C7 C28E LONG: CLR TR1 ;进入长按键程序,停计时并恢复初值00C9 758D3C MOV TH1,#3CH00CC 758BB0 MOV TL1,#0B0H00CF 75521E MOV 52H,#3000D2 E550 MOV A,50H00D4 B40113 CJNE A,#01H,LONG1 ;若按的是健1,则显示学号00D7 7A07 MOV R2,#07H00D9 7860 MOV R0,#60H00DB E6 L2: MOV A,R000DC 9001E8 MOV DPTR,#TAB100DF 93 MOVC A,A+DPTR00E0 F599 MOV SBUF,A00E2 1099FD JBC TI,$00E5 08 INC R000E6 DAF3 DJNZ R2,L200E8 80FE SJMP $00EA E550 LONG1: MOV A,50H00EC B41173 CJNE A,#11H,LONG2 ;若按键为3,则输出电压00EF 90FEF9 MOV DPTR,#0FEF9H ;选定ADC080900F2 F0 MOVX DPTR,A ;启动AD转换00F3 22 RET00F4 C083 IN_INT0: PUSH DPH00F6 C082 PUSH DPL00F8 C0E0 PUSH ACC00FA 753500 MOV 35H,#00H ;将用来存商和余数的单元清零00FD 753600 MOV 36H,#00H0100 753700 MOV 37H,#00H0103 753800 MOV 38H,#00H0106 905FF9 MOV DPTR,#5FF9H ;选中IN10109 E0 MOVX A,DPTR ;读数010A 75F033 MOV B,#51010D 84 DIV AB010E F7 MOV R1,A ;存转换后的BCD码个位010F 09 INC R10110 A70A MOV R1,0AH ;存小数点0112 09 INC R10113 740A D1: MOV A,#10 0115 C5F0 XCH A,B0117 A4 MUL AB ;余数乘100118 30F006 JNB B,D2 ;判断有没有溢出011B 753505 MOV 35H,#5011E 753601 MOV 36H,#10121 75F033 D2: MOV B,#510124 84 DIV AB ;低八位除以510125 2535 ADD A,35H ;商相加0127 F7 MOV R1,A ;存小数点后第一位0128 09 INC R10129 E5F0 MOV A,B012B 2536 ADD A,36H ;余数相加012D 75F00A MOV B,#10 0130 A4 MUL AB ;余数乘100131 30F006 JNB B,D3 ;判断有没有溢出0134 753705 MOV 37H,#50137 753801 MOV 38H,#1013A 75F033 D3: MOV B,#51013D 84 DIV AB ;低八位除以51013E 2537 ADD A,37H ;商相加0140 F7 MOV R1,A ;存小数点后第二位0141 09 INC R10142 7700 MOV R1,#00H ;存黑0144 09 INC R10145 7700 MOV R1,#00H ;存黑0147 9001EC MOV DPTR,#TAB2014A 7C06 MOV R4,#6 ;送六个数014C E6 LD: MOV A,R0 ;从最后一位开始送014D 19 DEC R1014E 93 MOVC A,A+DPTR ;选字形代码014F F599 MOV SBUF,A0151 3099FD JNB TI,$0154 C299 CLR TI0156 DCF4 DJNZ R4,LD ;是否六个数送完0158 1201B5 LCALL DELAY2 ;延时015B D0E0 POP ACC015D D082 POP DPL015F D083 POP DPH0161 32 RETI0162 B40003 LONG2: CJNE A,#00H,START ;若按的是键0,则输出波形0165 020186 LJMP OUT0168 907FFF START: MOV DPTR,#7FFFH ;选定DAC0832016B 7401 L5: MOV A,#01H016D F5F0 MOV B,A016F 7400 MOV A,#00H0171 95F0 SUBB A,B ;输出400HZ的梯形波0173 04 UP: INC A0174 F0 MOVX DPTR,A0175 B46400 CJNE A,#64H,L300178 40F9 L30: JC UP017A 1201DF DOWN: LCALL DEL017D 14 L20: DEC A017E F0 MOVX DPTR,A017F B40000 CJNE A,#00H,L40 0182 40E7 L40:JC L50184 80F7 SJMP L200186 C2D3 OUT: CLR RS0 ;若按的是键1,退出中断0188 D082 POP DPL ;恢复现场018A D083 POP DPH018C D0E0 POP ACC018E 32 RETI018F D2D4 KEY: SETB RS1 ;确定键值的子程序0191 7590F0 MOV P1,#0F0H0194 8590F0 MOV B,P10197 75900F MOV P1,#0FH019A E590 MOV A,P1019C 45F0 ORL A,B ;形成键码019E F5F0 MOV B,A ;存入B中01A0 7800 MOV R0,#00H01A2 9001EC MOV DPTR,#TAB2 ;取健号初值01A5 E8 KEY1: MOV A,R001A6 93 MOVC A,A+DPTR ;取表格中对应键码值01A7 B5F004 CJNE A,B,KEY2 ;与B相比,不等则继续比较01AA 8850 MOV 50H,R0 ;相等则将键值保存01AC 8004 SJMP KEY301AE 08 KEY2: INC R001AF B804F3 CJNE R0,#04H,KEY101B2 C2D4 KEY3: CLR RS101B4 22 RET01B5 D2D4 DELAY2: SETB RS1 ;10ms延时程序01B7 7814 MOV R0,#14H01B9 797D D4: MOV R1,#7DH01BB 00 D5: NOP01BC 00 NOP01BD D9FC DJNZ R1,D501BF D8F8 DJNZ R0,D401C1 C2D4 CLR RS101C3 22 RET01C4 C2D3 OUT1: CLR RS001C6 D082 POP DPL01C8 D083 POP DPH01CA D0E0 POP ACC01CC 32 RETI 01CD 7D0A DELAY1: MOV R5,#10 ;0.5s延时程序01CF D28C SETB TR001D1 108D02 DL5: JBC TF0,DL301D4 80FB SJMP DL501D6 758C3C DL3: MOV TH0,#3CH01D9 758AB0 MOV TL0,#0B0H01DC DDF3 DJNZ R5,DL501DE 22 RET 01DF 7806 DEL: MOV R0,#601E1 795A DL2: MOV R1,#9001E3 D9FE DL1: DJNZ R1,DL101E5 D8FA DJNZ R0,DL201E7 22 RET 01E8 C0F9A4 01EB B0 TAB1:DB 0C0H,0F9H,0A4H,0B0H, ;0,1,2,3的字形代码 01EC 040400 01

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论