实验一 I/O口输入输出实验
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验内容
以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态。用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口); 用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序 运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
五、实验参考程序
;//****************************************************************** ;文件名: Port for MCU51
;功能: I/O口输入、输出实验
;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口); ; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。 ;//****************************************************************** DIR BIT P3.0 ORG 0000H LJMP START ORG 0100H START: OUTPUT1:
MOV A, #0FEH MOV R5, #8 LOOP1: CLR C
MOV C,DIR
JC OUTPUT2 MOV P1, A RL A
ACALL DELAY DJNZ R5, LOOP1 SJMP OUTPUT1 OUTPUT2:
MOV A, #07FH MOV R5, #8 LOOP2:
CLR C MOV C,DIR JNC OUTPUT1 MOV P1, A RR A
ACALL DELAY DJNZ R5,LOOP2 SJMP OUTPUT2 DELAY: MOV R6,#0 DELAYLOOP1: MOV R7,#0 DELAYLOOP2:
NOP NOP
DJNZ R7,DELAYLOOP2 DJNZ R6,DELAYLOOP1 RET END
六、实验结果
当八位逻辑电平的K0拨到上方,即输出高电平时,实验箱B5区的八个LED灯从左至右循环点亮,当K0拨到下方,即输出低电平时,八个LED灯从右至左循环点亮。
七、结果分析
程序通过查询方式不断检测P3.0口的输入状态,当P3.0输入为0时,由P1口通过左移指令RL轮流输出低电平驱动LED发光,在左移时通过软件延时控制LED 亮的时间;当P3.0输入为1时,由P1口通过右移指令RR轮流输出低电平驱动LED发光,在右移时同样通过软件延时控制LED 亮的时间,如此循环扫描查询,便可实现流水灯的效果。
实验二 外部中断实验
一、实验目的
学习外部中断技术的基本使用方法。
二、实验内容
INT0 端接单次脉冲发生器。按一次脉冲产生一次中断,CPU 使P1.0 状态发生一次反转,P1.0接LED 灯,以查看信号反转。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤
1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU 模块的P10 接八位逻辑电平显示模块的灯。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。
3)连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮。
五、实验参考程序
;//************************************************* ;文件名: EXint for MCU51 ;功能: 外部中断实验
;接线: 导线连接单次脉冲模块的输出端到CPU模块的P32, ; CPU模块的P10接八位逻辑电平显示模块的L0灯。 ;//************************************************* LED BIT P1.0 LEDBUF BIT 20H ORG 0 LJMP START ORG 3
INTERRUPT0:
PUSH PSW ; 保护现场 CPL LEDBUF ; 取反LED MOV C, LEDBUF MOV LED, C
POP PSW ; 恢复现场
RETI
START:
CLR LEDBUF CLR LED
MOV TCON, #01H ; 外部中断0下降沿触发
MOV IE, #81H ; 打开外部中断允许位(EX0)及总中断允许位(EA) OK: LJMP OK END
六、实验结果
每按下E3区的单次脉冲触发按钮时,B5区的发光二极管状态取反一次,即原来是亮按下时灭,原来是灭则按下时亮。
七、结果分析
程序由外部中断0实现,外部中断0由下降沿触发,外部输入由单次脉冲触发器输入,每次按下按钮时会触发单次脉冲,产生一个下降沿,从而使程序产生中断,在中断服务函数的程序里面对P1.0取反,由P1.0驱动LED,就可实现本实验的功能。