单片机跑马灯实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一、输入输出实验
实验目的:
1、体验单片机的程序编写和运行过程
2、掌握汇编语言的设计编译和运行
实验内容:
用P0端口作输入,P1端口做输出。程序循环从P0端口读入数据,从P1端口输出。输出用LED灯显示。
实验步骤和方法:
1、搭电路。输入端口的6个口接开关接口,输出6个接口接LED灯。
2、编写程序
3、调试程序
实验要求:
1、先用proteus软件搭建电路,编写程序作仿真。
2、在软件里验证好程序再上实验平台验证
I/O实验程序:
ORG 0000H MAIN: MOV P0,#0FFH LOOP: MOV A,P0
MOV P1,A
LJMP LOOP END
实验二、跑马灯实验目的:
1、掌握单片机的输出
2、掌握子程序的调用方法
3、掌握定时的设置方法
实验内容:
8个LED灯轮流点亮,点亮间隔为1秒。
定时方法采用子程序调用,延时子程序已经编写好。实验步骤和方法:
1、搭电路。P1作输出端口,接LED灯。
2、编写程序
3、调试程序
实验要求:
1、先用proteus软件搭建电路,编写程序作仿真。
2、在软件里验证好程序再上实验平台验证。
附:延时子程序
DELAY: M OV R3,#20 ;延时0.2s
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
跑马灯延时子程序
ORG 00H
JMP MAIN
ORG 30H
MAIN:
MOV A,#0FFH
CLR C
MOV R2,#08H ;循环八次LOOP:
RLC A ;带进位左移
MOV P2,A
MOV R7,#05H
LOOP1:
CALL DELAY
DJNZ R7,LOOP1
DJNZ R2,LOOP ;反复循环
JMP MAIN
DELAY: ;延时0.2s子程序MOV R3,#20
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
实验三、跑马灯
实验目的:
1、掌握单片机的输出
2、掌握定时器中断和查询的使用方法
实验内容:
8个LED灯轮流点亮,点亮间隔为1秒。
定时方法采用8051定时器,分别使用查询和中断编写两个程序。实验步骤和方法:
1、搭电路。P1作输出端口,接LED灯。
2、编写程序
3、调试程序
实验要求:
1、先用proteus软件搭建电路,编写程序作仿真。
2、在软件里验证好程序再上实验平台验证。
下面的亮灯顺序1,2 ……7,8,1,2 ……
跑马灯中断程序
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0050H
MAIN:
MOV TMOD, #01 ;令T0定时方式1
MOV TH0, #3CH
MOV TL0, #0B0H ;50ms@12MHz
SETB TR0 ;启动T0
MOV IE, #82H ;允许中断
MOV R7, #20
MOV A, #7FH
MOV P2, A
M_LOOP: ;主程序,空循环
SJMP M_LOOP
T0_INT: ;50ms执行一次
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, T0_END ;中断20次?
MOV R7, #20 ;才到1s
RR A
MOV P2, A
T0_END:
RETI
END
跑马灯查询程序
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN:
MOV TMOD, #01 ;令T0定时方式1
MOV TH0, #3CH
MOV TL0, #0B0H ;50ms@12MHz
SETB TR0 ;启动T0
MOV R7, #20
MOV A, #7FH
MOV P2, A
M_LOOP:
JNB TF0, M_LOOP ;T0没有溢出,就在此循环不止
CLR TF0
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, M_LOOP ;溢出20次?
MOV R7, #20 ;才到1s
RR A
MOV P2, A
SJMP M_LOOP
END
下面的亮灯顺序1,2 ……7,8,7 ……2,1,2 ……
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0050H MAIN:
MOV TMOD, #01
MOV TH0, #3CH
MOV TL0, #0B0H
SETB TR0
MOV IE, #82H
MOV R7, #20
MOV R2, #07H
MOV R0, #00H
MOV A, #0FEH
MOV P2, A
SJMP $
T0_INT:
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, T0_END
MOV R7, #20
CJNE R0, #0, LOOP
RL A
MOV P2, A
DJNZ R2, T0_END
MOV R2, #07H
MOV R0, #01H
AJMP T0_END LOOP:
RR A
MOV P2, A
DJNZ R2, T0_END
MOV R2, #07H
MOV R0, #00H
T0_END:
RETI
END
ORG 0000H
LJMP MAIN
ORG 0050H