南昌大学2014年单片机实验报告 下载本文

实验一 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,就可实现本实验的功能。