单片机实验3(4)

2018-11-21 23:44

SETB C ;进外部中断0,则把C置位 SETB TF0;立刻对按键做出反应,迅速切换模式 RETI

;**********数码管显示模块************************************* INT_T2:CLR TF2H;清除中断标志位 PUSH ACC;保护现场 PUSH PSW PUSH DPL PUSH DPH MOV DPTR,#TAB1

MOV A,FLAG;FLAG的值决定当前显示哪一位数码管 ANL A,#03H ;防止FLAG大于3,循环扫描四位数码管 MOV FLAG,A INC FLAG RL A JMP @A+DPTR

TAB1:AJMP NUM0 ;分别对应四个数码管显示分支程序 AJMP NUM1 AJMP NUM2

AJMP NUM3

NUM0:MOV P1,#00H;关闭显示,防治切换数码管位时显示错乱 CLR P0.7 ;选择显示数码管第0位 CLR P0.6

MOV A,BIT0;0位显示的数码送给A LCALL SHOW ;调用数码显示管子程序

MOV C,DOT0 ;DOT0为1则显示该位数码管的小数点 MOV P1.0,C

LJMP RETEN ;返回

NUM1:MOV P1,#00H

CLR P0.7 ;选择显示数码管第1位 SETB P0.6 MOV A,BIT1 LCALL SHOW MOV C,DOT1 MOV P1.0,C

LJMP RETEN

NUM2:MOV P1,#00H

16

SETB P0.7 ;选择显示数码管第2位

CLR P0.6 MOV A,BIT2 LCALL SHOW MOV C,DOT2 MOV P1.0,C

LJMP RETEN

NUM3:MOV P1,#00H SETB P0.7 ;选择显示数码管第3位

SETB P0.6 MOV A,BIT3 LCALL SHOW MOV C,DOT3 MOV P1.0,C

LJMP RETEN

RETEN:POP DPH POP DPL POP PSW POP ACC

RETI

;***数码管显示子程序********* SHOW:MOV DPTR,#TAB2 RL A JMP @A+DPTR

TAB2:AJMP CASE0 ;11个分支分别对应数字0~9和分隔符号“-”。 AJMP CASE1 AJMP CASE2 AJMP CASE3 AJMP CASE4 AJMP CASE5 AJMP CASE6 AJMP CASE7 AJMP CASE8 AJMP CASE9 AJMP CASE10

CASE0:MOV P1,#0FCH;显示“0” RET

17

CASE1:MOV P1,#60H ;显示“1” RET

CASE2:MOV P1,#0DAH;显示“2”

RET

CASE3:MOV P1,#0F2H;显示“3” RET

CASE4:MOV P1,#066H;显示“4” RET

CASE5:MOV P1,#0B6H;显示“5” RET

CASE6:MOV P1,#0BEH;显示“6” RET

CASE7:MOV P1,#0E0H;显示“7” RET

CASE8:MOV P1,#0FEH;显示“8” RET

CASE9:MOV P1,#0F6H;显示“9” RET

CASE10:MOV P1,#02H;显示“-” RET

;*****键盘扫描模块(子程序)*************************** FINDKEY: MOV P2,#0EFH

JNB P2.0,KEY0 ;用到键盘上K0,K1,K2,K3来选择模式 JNB P2.1,KEY1 JNB P2.2,KEY2 JNB P2.3,KEY3 RET

KEY0:ACALL DELAY10m ;延迟去抖 JB P2.0,RET_KEY MOV A,#00H

;K0对应模式0

CJNE A,KEYNUM,NEWKEY0

RET

;两次按键相等模式不变不需要切换模式

NEWKEY0:MOV KEYNUM,#00H;保存按键值 SETB OVER ;按下按键后不再按时间自动切换模式 SETB TF0 ;立刻对按键做出反应,迅速切换模式

RET

18

KEY1:ACALL DELAY10m JB P2.1,RET_KEY MOV A,#01H

;K1对应模式1

CJNE A,KEYNUM,NEWKEY1 RET

;两次按键相等模式不变不需要切换模式

NEWKEY1:MOV KEYNUM,#01H;保存按键值 SETB OVER

SETB TF0;立刻对按键做出反应,迅速切换模式

RET

KEY2:ACALL DELAY10m JB P2.2,RET_KEY MOV A,#02H

;K2对应模式2

CJNE A,KEYNUM,NEWKEY2 RET

;两次按键相等模式不变不需要切换模式

NEWKEY2:MOV KEYNUM,#02H;保存按键值 SETB OVER

SETB TF0;立刻对按键做出反应,迅速切换模式

RET

KEY3:ACALL DELAY10m JB P2.3,RET_KEY MOV A,#03H ;K3对应模式3,计时模式 CJNE A,KEYNUM,NEWKEY3 RET

;两次按键相等模式不变不需要切换模式

NEWKEY3:MOV KEYNUM,#03H;保存按键值 SETB OVER

SETB TF0;立刻对按键做出反应,迅速切换模式

RET

RET_KEY:RET

;*********延迟20us*********

DELAY20u:MOV R1,#1EH ;R2控制循环次数 DJNZ R1,$ RET

;*********延迟10ms********* DELAY10m:MOV R2,#50 LOOP1:MOV R3,#10 LOOP2:LCALL DELAY20u DJNZ R3,LOOP2

19

DJNZ R2,LOOP1

RET

;*********延迟约0.3s*********

DELAY0_5:MOV R2,#100 LOOPA:MOV R3,#100 LOOPB:LCALL DELAY20u DJNZ R3,LOOPB DJNZ R2,LOOPA

RET

;********************************************************* ; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init:

anl PCA0MD, #0BFh mov PCA0MD, #000h ret

Timer_Init:

mov TMOD, #011h mov CKCON, #002h MOV TH0,#0E7H ;T0装入初值0.1S,CPL

MOV TL0,#014H

MOV TH1,#03H ;T1装入初值1SCPL,0.5HZ MOV TL1,#0BEH

mov TMR2RLL, #0C7h mov TMR2RLH, #0FCh mov TMR2L, #0C7h mov TMR2H, #0FCh

CLR TF2LEN

;NO LOW OVERINT

CLR T2SPLIT;16

ret

Port_IO_Init:

mov P0MDOUT, #001h mov P3MDOUT, #002h mov XBR1, #040h

20


单片机实验3(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019-2025年中国血液净化行业市场运营模式分析研究报告(目录)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: