广告流水灯程序.docx
《广告流水灯程序.docx》由会员分享,可在线阅读,更多相关《广告流水灯程序.docx(17页珍藏版)》请在冰豆网上搜索。
![广告流水灯程序.docx](https://file1.bdocx.com/fileroot1/2022-10/29/efe3c004-4d6f-463f-8584-7e7f68d45c9e/efe3c004-4d6f-463f-8584-7e7f68d45c9e1.gif)
广告流水灯程序
;广告流水灯程序
ORG00H
MOVP2,#80H
START:
MOVA,#0FFH;赋初值
CLRC
MOVR2,#8
LOOP:
RRCA;带进位右移
MOVP1,A
CALLDELAY
DJNZR2,LOOP
MOVR2,#7
LOOP1:
RLCA;带进位左移
MOVP1,A
CALLDELAY
DJNZR2,LOOP1
JMPSTART
DELAY:
MOVR3,#20;延时0.2秒
D1:
MOVR4,#20
D2:
MOVR5,#248
DJNZR5,$
DJNZR4,D2
DJNZR3,D1
RET
END;
利用中断的99秒计时器,动态扫描两位数码管
LACTCH1BITP2.0
LACTCH2BITP2.3
ORG00H
JMPSTART
ORG0BH
JMPTIM0
START:
MOVR3,#00;中断循环次数
MOVR4,#00H;时间初值
MOVDPTR,#TABLE
MOVSP,#40H
MOVTMOD,#01H;定时器工作方式
MOVTH0,#HIGH(65536-3800)
MOVTL0,#LOW(65536-3800);初值4MS
SETBTR0
MOVIE,#82H;开中断
TIM0:
MOVTH0,#HIGH(65536-3800)
MOVTL0,#LOW(65536-3800)
INCR3
CJNER3,#250,X1;1S
MOVR3,#00
MOVA,R4;十进制转换
MOVB,#10H
DIVAB
MOV20H,B;个位
MOV21H,A;十位
MOVA,R4
ADDA,#01H
DAA
MOVR4,A
CALLSCAN;调用数码管扫描
X1:
PUSHACC
PUSHPSW
CALLSCAN
POPPSW
POPACC
RETI
SCAN:
MOVA,21H
MOVCA,@A+DPTR
MOVP0,A
SETBLACTCH1
CLRLACTCH1
MOVP0,#11111110B;扫描子程序
SETBLACTCH2
CLRLACTCH2
CALLDELAY1
MOVA,20H
MOVCA,@A+DPTR
MOVP0,A
SETBLACTCH1
CLRLACTCH1
MOVP0,#11111101B;0代表选通该位数码管
SETBLACTCH2
CLRLACTCH2
CALLDELAY1
RET
DELAY:
MOVR5,#50;典型延时程序
D1:
MOVR6,#40
D2:
MOVR7,#248
CALLSCAN
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
DELAY1:
MOVR6,#4;扫描延时
D3:
MOVR7,#248
DJNZR7,$
DJNZR6,D3
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;共阴字码表
END
;交通灯模拟实验程序
GEWEIEQU21H;个位数据
SHIWEIEQU23H;十位数据
SCANLEDEQU25H
SCANMODEEQU26H
REDEQU28H;定义灯的缓冲区
GREENEQU29H
YELLOWEQU32H
NUMTIMEQU33H
LEDEQU34H
LACTCH1BITP2.0
LACTCH2BITP2.3
ORG000H
JMPSTART
ORG0BH
JMPTIMER0;定时器0中断入口
ORG100H
START:
MOVSP,#50H
MOVR0,#20H
MOVR5,#20
CLR0:
MOV@R0,#00H
INCR0
DJNZR5,CLR0
MOVTMOD,#01H;设置定时器
MOVTH0,#HIGH(65536-5000)
MOVTL0,#LOW(65536-5000)
SETBTR0
MOVIE,#10000010B;端口初始化
MOVP0,#0FFH
MOVP1,#0FFH
MOVP2,#00H
MOVP3,#0FFH
MOVR3,#10
MOVR2,#3
MOVR1,#10
MOVR7,#200
MOVRED,#10
MOVYELLOW,#3
MOVGREEN,#10
MOVNUMTIM,#10
MOVLED,#0FFH
AJMP$
;=============================================================
TIMER0:
PUSHACC;定时器部分,负责交通灯的及时和数码管动态扫描
PUSHPSW
MOVTH0,#HIGH(65536-5000);重新赋初值
MOVTL0,#LOW(65536-5000)
DJNZR7,RET0
MOVR7,#200
MOVA,SCANMODE;调用扫描
MOVB,#4
DIVAB
MOVA,B
RLA
MOVDPTR,#TAB_SCAN
JMP@A+DPTR
TAB_SCAN:
AJMPRED_LIGHT
AJMPYEL_LIGHT
AJMPGRE_LIGHT
AJMPYEL_LIGHT
RET0:
MOVA,NUMTIM
LCALLBIN_BCD
MOVSHIWEI,A
MOVGEWEI,B
INCSCANLED
MOVA,SCANLED
MOVB,#4
DIVAB
MOVA,B
RLA
MOVDPTR,#TAB_SCAN0
JMP@A+DPTR
TAB_SCAN0:
AJMPSCAN_L1
AJMPSCAN_L2
SCAN_L1:
MOVP0,#11111110B
SETBLACTCH2
CLRLACTCH2
MOVA,SHIWEI
JMPEND_SCAN
SCAN_L2:
MOVP0,#11111101B
SETBLACTCH2
CLRLACTCH2
MOVA,GEWEI
JMPEND_SCAN
END_SCAN:
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
SETBLACTCH1
CLRLACTCH1
MOVA,LED
MOVP1,A
POPPSW
POPACC
RETI
RED_LIGHT:
MOVLED,#11111100B
MOVNUMTIM,RED
DECRED
MOVA,RED
CJNEA,#0FFH,RET0
MOVRED,#10
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
YEL_LIGHT:
MOVLED,#11110011B
MOVNUMTIM,YELLOW
DECYELLOW
MOVA,YELLOW
CJNEA,#0FFH,RET0
MOVYELLOW,#3
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
GRE_LIGHT:
MOVLED,#11001111B
MOVNUMTIM,GREEN
DECGREEN
MOVA,GREEN
CJNEA,#0FFH,RET1
MOVGREEN,#10
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
RET1:
JMPRET0
BIN_BCD:
MOVB,#10
DIVAB
RET
DELAY:
MOVR5,#02
D1:
MOVR6,#200
D2:
MOVR7,#200
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;共阳字码表
END
;简单的时钟程序
LACTCH1BITP2.0;锁存
LACTCH2BITP2.3
BUFF_KEYEQU21H;键盘键
LED1EQU22H;数码管显示缓存
LED2EQU23H
LED3EQU24H
LED4EQU25H
LED5EQU26H
LED6EQU27H
LED_LPEQU28H;T0键盘显示扫描缓存
HOREQU30H;小时值缓存
MINEQU31H;分钟值缓存
SECEQU32H;秒值缓存
F_BEEPBIT01H
LED_PORTEQUP0
DIG_PORTEQUP0
SW1BITP3.0
SW2BITP3.1
SW3BITP3.2
SW4BITP3.3
SW5BITP3.4
SW6BITP3.5
BEEPBITP1.6
org000h
JMPmain
ORG00BH
JMPT0_INT
ORG100H
MAIN:
MOVSP,#40H
MOVPSW,#00H
MOVR0,#7FH;初始化RAM区,
CLR_RAM:
MOVA,#00H
MOV@R0,A
DJNZR0,CLR_RAM
MOVP1,0FFH;INIT
MOVP2,0FFH
MOVP0,0FFH
MOVP3,0FFH
MOVHOR,#12
MOVTMOD,#21h
MOVTH0,#240;T0=4MS
MOVTL0,#96
SETBTR0
SETBET0
SETBEA
WAIT_KEY:
;等候按键!
JNBSW1,SW1_OK
JNBSW2,SW2_OK
JNBSW3,SW3_OK
JNBSW4,SW4_OK
JNBSW5,SW5_OKA
JNBSW6,SW6_OKA
JMPWAIT_KEY
SW5_OKA:
JMPSW5_OK
SW6_OKA:
JMPSW6_OK
SW1_OK:
MOVA,HOR
CJNEA,#24,SW1_OVER
MOVHOR,#00H
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW1_OVER:
INCHOR;时加1
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW2_OK:
MOVA,HOR
CJNEA,#00,SW2_OVER
MOVHOR,#23
SE