ORG 0000H
LJMP START
ORG 000BH
AJMP RUNO
ORG 0040H
RUNO: PUSH PSW ;
CLR EA ;关总中断
CJNE R1,#00H,RESERVE;中断控制字符是否跑动,R1=0不跑,R1=1跑
MOV R1,#01H ;
AJMP EXITO ;
RESERVE:MOV R1,#00H ;
EXITO:MOV R4,#25 ;软件延时1ms
DEL3:MOV R5,#20 ;
DEL4:DJNZ R5,DEL4 ;
DJNZ R4,DEL3 ;
POP PSW ;
SETB EA ;开总中断
RETI ;
DELAY:PUSH PSW ;
MOV R4,#25 ;软件延时1ms
DEL1:MOV R5,#20 ;
DEL2:DJNZ R5,DEL2 ;
DJNZ R4,DEL1 ;
POP PSW ;
RET ;
ORG 0100H
START:SETB IT0 ; 外部中断0脉冲触发方式
MOV IE,#81H ; 开中断
ALLSTART: MOV DPTR,#BUF ;字符缓冲区首地址
MOV B,#00H ;B用作字符指针
MOV R0,#00H ;R0列扫描信号
MOV R7,#00H ;R7作结束标志
MOV R1,#00H ;R1判断是否跑
MOV R2,#00H ;R2计面扫描次数
AGAIN0: MOV R3,B ;R3记录面扫描首地址
AGAIN: SETB P1.7 ;锁译码器
MOV A,B ;送P0
MOVC A,@A+DPTR ;
MOV P0,A ;
INC B ;
MOV A,B ;送P2
MOVC A,@A+DPTR ;
MOV P2,A ;
SETB P1.5 ;开锁存
CLR P1.5 ;锁存端口0和2
MOV A,B ;
ADD A,#1FH ;
MOV B,A ;
MOVC A,@A+DPTR ;
CJNE A,#80H,NOVER1 ;判断是否到末尾
MOV P0,#00H ;若已到末尾则送0000H且置结束标志
MOV P2,#00H ;
MOV R7,#0FFH ;
LJMP SCAN ;
NOVER1: MOV P0,A ;送P0
INC B ;
MOV A,B ;
MOVC A,@A+DPTR ;
MOV P2,A ;送P2
SCAN: MOV P1,R0 ;送列扫描信号
CLR P1.7 ;选通译码器
LCALL DELAY ;调延时子程序(每列亮持续时间)
SETB P1.7 ;锁译码器
INC R0 ;R0自加
JUDGE: CJNE R7,#00H,ALLSTART ;若R7不等于00H则结束,一次跑动完成
CJNE R0,#10H,NOVER2 ;判断一面是否扫描完
MOV R0,#00H ;若一面扫描完成则R0计数清零
CJNE R1,#01H,NOVER4 ;判断字符是否跑动
CJNE R2,#05H,NOVER3 ;判断面扫描次数
MOV R2,#00H ;若面扫描次数达到则R2清零且B向后移重新扫描形成跑动
MOV A,B ;
CLR CY ;
SUBB A,#3DH ;
MOV B,A ;
LJMP AGAIN0 ;
NOVER2: MOV A,B ;若一面未扫完,则继续扫描
CLR CY ;
SUBB A,#1FH ;
MOV B,A ;
LJMP AGAIN ;
NOVER3: INC R2 ;R2自加
NOVER4: MOV B,R3 ;若面扫描次数未到,则送B面首地址且R2自加
LJMP AGAIN ;
; 存放字符十六进制数据
BUF: DB 00H,00H,00H,00H,1FH,0F0H,12H,20H,12H,20H,12H,20H,12H,20H,0FFH,0FCH;
DB 12H,22H,12H,22H,12H,22H,12H,22H,1FH,0F2H,00H,02H,00H,0EH,00H,00H ;"电"
DB 00H,80H,00H,80H,40H,80H,40H,80H,40H,80H,40H,82H,40H,81H,47H,0FEH ;
DB 48H,80H,50H,80H,60H,80H,40H,80H,00H,80H,01H,80H,00H,80H,00H,00H ;"子"
DB 02H,00H,82H,00H,73H,0FEH,20H,04H,00H,09H,01H,01H,02H,02H,7DH,0C2H ;
DB 41H,34H,41H,08H,41H,08H,7DH,34H,03H,0C2H,02H,03H,02H,02H,00H,00H ;"设"
DB 04H,00H,84H,00H,74H,00H,27H,0FEH,00H,04H,00H,08H,04H,10H,04H,00H ;
DB 04H,00H,04H,00H,0FFH,0FFH,04H,00H,04H,00H,04H,00H,04H,00H,00H,00H ;"计"
DB 00H,02H,00H,04H,00H,08H,00H,10H,00H,60H,0C1H,80H,6EH,00H,18H,00H ;
DB 06H,00H,01H,00H,00H,0C0H,00H,20H,00H,18H,00H,0CH,00H,08H,00H,00H ;"入"
DB 00H,00H,00H,00H,1FH,0FFH,00H,00H,0E0H,00H,00H,00H,40H,00H,40H,00H ;
DB 40H,00H,40H,00H,40H,00H,40H,02H,40H,01H,7FH,0FEH,00H,00H,00H,00H ;"门"
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H ;
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,80H,00H ;
END
Pay attention to yourself,You never know what you can do till you try!
Taste:Music,Basketball,IT