附录:
1、 LED广告循环参考代码:
ORG 0000H
MOV R4,#08H ;一个字,八字节代码
MOV P2,#0A0H ;利用p2口第二功能
MOV R1,#00H
MOV A,#00H
MOVX @R1,A ;关显示
NEW_CODE:MOV 61H,#04H ;此程序有四个字
MOV DPTR,#DIS_CODE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DIP: MOV 69H,#40H ;一个字停留的速度
RD_DISP:
MOV R3,#80H ;选通一行
MOV R2,#00H ;送出字码
RDISP1: MOV A,#00H ;;;;
MOVX @R1,A ;;;;关显示
MOV A,R3 ;;;;
www.751com.cn
DJNZ R4,RDISP1 ;送完一个字代码吗?
MOV R4,#08H ;重新初始化r4
DJNZ 69H,RD_DISP ;速度系数没有循环完,继续
MOV R7,#08H ;指针dptr加8
DEC_CODE:INC DPTR ;指向下一个字代码
DJNZ R7,DEC_CODE ;四个字都循环了一遍了吗?
DJNZ 61H,DIP
MOV 61H,#02H
SJMP NEW_CODE
SEND: MOV PCON,#80H ;初始化串行口
MOV TMOD,#20H ;为方式0
MOV TH1,#98H
CLR ET1
SETB TR1
MOV SCON,#00H
CLR ES
MOV A,R3
MOV SBUF,A ;把选通行代码送出
W1: JNB TI,W1 ;等待数据送出
CLR TI ;数据送出后,中断标志清零
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAYT:MOV R7,#01H
DLY1: MOV R6,#0FFH
DLY2: DJNZ R6,DLY2
DJNZ R7,DLY1
RET
DIS_CODE: DB 10H,0FEH,92H,0FEH,92H,0FEH,11H,1FH
DIS_CODE1:DB 0FFH,0FFH,18H,18H,18H,18H,0FFH,0FFH
DIS_CODE2: DB 10H,0FEH,92H,0FEH,92H,0FEH,11H,1FH
DIS_CODE3: DB 3EH,04H,08H,0FFH,08H,04H,14H,08H
2、直接写端口参考代码:
MOV R0,#79H ;直接写端口程序
MOV R2,#00H ;暂存取得的字型码,它将在填充缓存子程序中使用
MOV R3,#00H ;用于取得键值后,键值暂存此中
MOV 70H,#10H ;70h放置速度系数
MOV 71H,#00H ;71h=00h,表示右移,01h表示左移
FILL: ACALL FILLFUL ;填充数据缓冲区
MOV A,70H
MOV 72H,A
DIS_CAL:ACALL DISPLAY
ACALL KEY_SCAN ;检测是否有键按下
JNZ DEAL ;有键按下,则跳出程序主线,转去键处理
DJNZ 72H,DIS_CAL ;速度系数循环完,则应改变字位
SJMP FILL
DEAL: ACALL DISPLAY
ACALL DISPLAY ;消抖动
ACALL KEY_SCAN ;确认有键按下吗?
JZ FILL ;无键按下则跳回主线,继续显示
ACALL GET_KEY ;取键值
ACALL GET_K_NUM ;计算键代码
MOV A,R3
CLR C
SUBB A,#10H
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页