单片机实验报告山东大学
- 格式:doc
- 大小:5.26 MB
- 文档页数:61
第三单元Proteus 系统仿真实验
实验一基本并行口I/O口实验自我完成实验
1、实验要求
当按键SW1 按下之后,D1-D8 轮流点亮,点亮时间为100ms,当按键停下后,停止轮换,再次按下后继续轮换。
2、编程思路
①进行初始化工作,包括设置堆栈指针SP,将P2 口所有位设置为1,使P2 口所接发光二
极管全部熄灭。将显示缓冲单元(设为20H 单元)初始化为FEH。
②从P1 口读数据,查看P1.0 位,如果P1.0 位为0,则执行如下循环:将显示缓冲单元
的值送给P2 口,调用100ms 延时程序,将显示缓冲单元的值循环左移 1 位,再送回显示缓
冲单元。如果P1.0 位不为0 则不执行上述循环。
③重复上面的操作②
3、实验步骤
①根据上述实验内容,参考 1.2.2,在Proteus 环境下建立图 3.5 所示原理图,并将其保
存为basicIO_self.DSN 文件。
②根据(2)和(3)编写控制源程序,将其保存为basicIO_self.asm。
③将源程序添加到U1 中,并构造(build)该程序。
④执行仿真过程观察D1-D8 的指示,查看程序功能是否正确。
⑤修改延时程序延时参数,重新执行③和④。
4、源程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H
MOV P2,#0FFH
MOV A,#0FEH
MOV 20H,A;缓冲单元
LOOP:
JNB P1.0,LOOP1; ;如果P1.0=0,跳转
SJMP LOOP ;否则循环不断检测
LOOP1:
MOV P2,20H ;将缓冲单元内的值给P2口
LCALL DELAY100MS ;延时100ms
; MOV A,20H
RL A ;左移一位
MOV 20H,A
JB P1.0,LOOP;如果P1.0=1,跳转到LOOP处LJMP LOOP1;否则循环
DELAY100MS:MOV R7,#200 ;1us
DL:MOV R6,#248 ;1us
DJNZ R6,$ ;248*2=496us
NOP ;1us
DJNZ R7,DL ;2us
RET
;(496+1+1+2)*200+1=100.001ms
END
5、电路图
6、仿真结果
当按键SW1 按下之后,D1-D8 轮流点亮,点亮时间为100ms,当按键停下后,停止轮换,再次按下后继续轮换。
实验二扩展并行I/O口实验自我完成实验
1、实验要求
仿真实现交通信号灯控制功能。
控制顺序为:
①南北绿灯亮,同时东西红灯亮10s;
②南北黄灯亮,同时东西红灯亮2s;
③南北红灯亮,同时东西绿灯亮10s;
④东西黄灯亮,同时南北红灯亮2s;
⑤重复①~④。
2、编程思路
①进行初始化工作,包括设置堆栈指针SP,将两个373 的输出口所有位均设置为1,使所有发光二极管全部熄灭。
②分析两个373 的地址:
假定所有无关地址均定义为1,那么U4 的锁存地址为:#0FE00H,U5 的锁存地址为:#0FD00H。
③分析4 个状态下两个373 的输出数据值:
假定“南北绿灯亮,同时东西红灯亮”为状态1,即:Stat1;“南北黄灯亮,同时东西红灯亮”为状态2,即:Stat2;
“南北红灯亮,同时东西绿灯亮”为状态3,即:Stat3;
“东西黄灯亮,同时南北红灯亮”为状态4,即:Stat4。
3、实验步骤
①根据上述实验内容,参考 1.2.2,在Proteus 环境下建立图 3.7 所示原理图,并将其保
存为expandIO_self.DSN 文件。
②根据(2)和(3)编写控制源程序,将其保存为expandIO_self.asm。
③将源程序添加到U1 中,并构造(build)该程序。
④执行仿真过程观察各个方向的交通信号灯指示,查看程序功能是否正确。
4、源程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H
MOV A,#0FFH
MOV DPTR,#0FE00H
MOVX @DPTR,A
MOV DPTR,#0FD00H
MOVX @DPTR,A
STAT1:
MOV A,#0F3H
MOV DPTR,#0FE00H
MOVX @DPTR,A
MOV A,#0CH
MOV DPTR,#0FD00H
MOVX @DPTR,A
LCALL DELAY10S
STAT2:
MOV A,#0C3H
MOV DPTR,#0FE00H
MOVX @DPTR,A
MOV A,#0FH
MOV DPTR,#0FD00H
MOVX @DPTR,A
LCALL DELAY2S
STAT3:
MOV A,#0FCH
MOV DPTR,#0FE00H
MOVX @DPTR,A
MOV A,#03H
MOV DPTR,#0FD00H
MOVX @DPTR,A
LCALL DELAY10S