51单片机 流水灯 实验(汇编)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 单片机I/O 并口视觉实验(流水灯)(仅供参考) 开课学院及实验室:xxxx 实验时间 : xxxx 年 xx 月 xx 日
实验目的
1、了解简单单片机应用系统的设计方法。
2、掌握应用KEIL 软件编辑、编译源程序的操作方法。
3、掌握应用PROTEUS 仿真软件的操作方法。
4、掌握C51的编程方法。
5、培养良好的实验习惯。
实验内容
1、AT89S52为主控芯片,用PROTEUS 仿真设计简单单片机应用系统。
2、编程实现8个发光LED“流水”的现象。
实验原理
1、流水灯
(1)实验原理图
(2)流程图:(我自己没画好请自行画)此处略去
(2)实验程序
1、单灯流水灯
ORG 000H
MOV R7,#0FEH ;初始:11111110 LOOP:
MOV P1,R7
LCALL DELAY
MOV A,R7
RL A ;左移
MOV R7,A
SJMP LOOP
DELAY:
MOV R6,#4H ;最外层4次
DE1:
MOV R5,#250 ;次外层250次
DE2:
MOV R4,#250 ;最外层250次
DJNZ R4,$
DJNZ R5,DE2
DJNZ R6,DE1 ;共:2us*4*250*250=0.5s RET
END
2、来回灯
ORG 000H
LL:
MOV R7,#0FEH;左移初始化
MOV R1,#7
LOOPL:
MOV P1,R7
LCALL DELAY
MOV A,R7
RL A
MOV R7,A
DJNZ R1,LOOPL ;左移7次后跳至右移
LR:
MOV R2,#07FH;右移初始化
MOV R1,#7
LOOPR:
MOV P1,R2
LCALL DELAY
MOV A,R2
RR A
MOV R2,A
DJNZ R1,LOOPR ;右移7次后跳至左移
JJM:
SJMP LL
DELAY:
MOV R6,#4H
DE1:
MOV R5,#250
DE2:
MOV R4,#250
DJNZ R4,$
DJNZ R5,DE2
DJNZ R6,DE1
RET
END
3、自定义灯
ORG 000H
MAIN:
MOV DPTR,#TAB
MOV R0,#0
MOV R1,#18
MLOOP:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
CALL DELAY
INC R0
DJNZ R1,MLOOP
JMP MAIN
TAB:DB 0E7H, 0DBH, 0BDH, 07EH, 0F0H, 0E1H, 0C3H, 087H, 00FH, 087H, 0C3H, 0E1H, 000H, 0FFH, 000H, 0FFH, 000H, 0FFH
DELAY:
MOV R6,#4H
DE1:
MOV R5,#250
DE2:
MOV R4,#250
DJNZ R4,$
DJNZ R5,DE2
DJNZ R6,DE1
RET
END
4、级联
ORG 000H
/********R7为灯的寄存**********/
/*R1控制灯的次数R2控制循环几次*/
/*********单灯两次*************/
MOV R2,#2
DANDENG:
MOV R7,#0FEH
MOV R1,#8
LOOP1:
MOV P1,R7
LCALL DELAY
MOV A,R7
RL A
MOV R7,A
DJNZ R1,LOOP1
DJNZ R2,DANDENG
/*********来回一次**************/ LAIHUI:
MOV R7,#0FEH
MOV R1,#7
LOOPLL:
MOV P1,R7
LCALL DELAY
MOV A,R7
RL A
MOV R7,A
DJNZ R1,LOOPLL
LR:
;MOV R2,#07FH
MOV R1,#8
LOOPRR:
MOV P1,R7
LCALL DELAY
MOV A,R7
RR A
MOV R7,A
DJNZ R1,LOOPRR
/**********自定义一次************/ ZIDINGYI:
MOV DPTR,#TAB
MOV R0,#0
MOV R1,#18
MMLOOP:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
CALL DELAY
INC R0