以下的汇编程序─用按钮开关控制跑马灯的速度
;=======================================================
;用按钮开关控制跑马灯的速度
;=======================================================
ORG 00H ;程序起始地址00H
MOV R0,#01111111B
MOV R4,#50 ;LED移动速度初值
;=======================================================
CHKPB: ORL P1,#11111111B ;设定埠1 接脚高电位
MOV A,P1 ;读取埠脚状态
CPL A ;取1的补码
JB ACC.2,UP ;按PB3减速
JB ACC.3,DOWN ;按PB4加速
SJMP PELE
;=======================================================
UP: MOV A,R4 ;减速
ADD A,#6 ;R4愈大,速度愈慢
JZ PELE ;R4最小值250
INC R4
INC R4
SJMP PELE
;=======================================================
DOWN: MOV A,R4 ;加速
ADD A,#236 ;R4愈小,速度愈快
JZ PELE ;R4最小值20
DEC R4
DEC R4
SJMP PELE
;=======================================================
PELE: MOV A,R0 ;LED右移子程序
MOV P2,A ;
RR A
MOV R0,A
ACALL SPEED
SJMP CHKPB
;=======================================================
SPEED: MOV A,R4 ;决定LED移动速度
MOV R5,A ;的子程序
T5: ACALL DELAY
DJNZ R5,T5
RET
;------------------------------
DELAY: MOV R6,#5
T6: MOV R7,#98
DJNZ R7,$
DJNZ R6,T6
RET
;=======================================================
END
因为要做专题制作报告,上面原设计用按钮开关控制跑马灯的速度,改变思路
设计利用VR可变电阻RC方式控制广告灯的速度,以下为广告灯程序,电路图怎么做?汇编程序怎么修改呢? 拜托帮忙解决,感恩喔
;=======================================================
; 广告灯程序
;=======================================================
ORG 00H ;程序起始地址00H
BEGIN: MOV R0,#0 ;取码指标初值
MOV R1,#7 ;资料码总数
NEXT: MOV DPTR,#TABLE ;
MOV A,R0 ;将数据码取出
MOVC A,@A+DPTR ;
;=======================================================
MOV R2,#56 ;LED右移次数
RAGAIN: MOV P1,A ;由埠1,埠2,
MOV P2,A ;埠0送出
MOV P0,A ;
ACALL DELAY01 ;
RR A ;右移一次
DJNZ R2,RAGAIN
;=======================================================
MOV R2,#56 ;LED左移次数
LAGAIN: MOV P1,A ;由埠1,埠2,
MOV P2,A ;埠0送出
MOV P0,A ;
ACALL DELAY01
RL A ;左移一次
DJNZ R2,LAGAIN
;------------------------------------------------------
INC R0 ;取码指标加1
DJNZ R1,NEXT ;取下一码
;=======================================================
MOV R2,#20 ;LED闪烁10次
MOV A,#0
FLASH: MOV P1,A
MOV P2,A
MOV P0,A
ACALL DELAY05
CPL A
DJNZ R2,FLASH
SJMP BEGIN
;=======================================================
DELAY01: ;延迟子程序
MOV R6,#250
T6: MOV R7,#198
DJNZ R7,$
DJNZ R6,T6
RET
;======================================================
DELAY05: ;延迟子程序
MOV R5,#5
TT5: ACALL DELAY01
DJNZ R5,TT5
RET
;=======================================================
TABLE: DB 0FCH,0F9H,0F3H,0E7H,0CFH, 9FH, 3FH, 7FH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 0E7H,0DBH,0BDH, 7EH,0BDH,0DBH,0E7H,0FFH ;
DB 0E7H,0C3H, 81H, 00H, 81H,0C3H,0E7H,0FFH ;
DB 0AAH, 55H, 18H,0FFH,0F0H, 0FH, 00H,0FFH ;
DB 0F8H,0F1H,0E3H,0C7H, 8FH, 1FH, 3FH, 7FH ;
DB 7FH, 3FH, 1FH, 8FH,0C7H,0E3H,0F1H,0F8H ;
DB 0FFH, 00H, 00H,0FFH,0FFH, 0FH,0F0H,0FFH ;
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH, 7FH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;
DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H, 80H, 00H ;
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;
DB 00H, 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH ;
DB 00H,0FFH, 00H,0FFH, 00H,0FFH, 00H,0FFH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH ;
DB 0FCH,0F9H,0F3H,0E7H,0CFH, 9FH, 3FH,0FFH ;
DB 0E7H,0DBH,0BDH, 7EH,0BDH,0DBH,0E7H,0FFH ;
DB 0E7H,0C3H, 81H, 00H, 81H,0C3H,0E7H,0FFH ;
DB 0AAH, 55H, 18H,0FFH,0F0H, 0FH, 00H,0FFH ;
DB 0F8H,0F1H,0E3H,0C7H, 8FH, 1FH, 3FH, 7FH ;
DB 7FH, 3FH, 1FH, 8FH,0C7H,0E3H,0F1H,0F8H ;
DB 0FFH, 00H, 00H,0FFH,0FFH, 0FH,0F0H,0FFH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH, 7FH ;
DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H, 80H, 00H ;
DB 00H, 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH ;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;
DB 00H,0FFH, 00H,0FFH, 00H,0FFH, 00H,0FFH ;
;======================================================
END |