如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验二、I/O口输入、输出实验林立强1000850116一、实验目的1.了解CPU对I/O口的操作方法。2.学会使用51系列单片机I/O口的基本输入、输出功能。3.了解51单片机的内部结构、引脚、寄存器的组成。二、实验原理MCS-51具有P0-P3四个端口,每个口有8条线,共计32条双向且可被独立寻址的I/O口线。本实验将P3口作输入口,接两个拨动开关,P1口作输出口,接8个LED。P1口、P3口为8位准双向口,每一位可独立定义为输入或输出,CPU对P1口、P3口的操作可以是字节操作,也可以是位操作。当P1口、P3口用作输入时,必经先对它置“1”。三、实验电路首先在Proteus软件中绘出原理图并编程进行仿真,然后在下载到单片机实验板上进行执行,仿真电路原理图如下,Proteus所需元件为:AT89C51、SW-SPST、LED-RED。图中用单片机的P1口作输出口接8个LED,8个LED按共阳极连接,端口逻辑值为0点亮LED;P3口作输入口接2个SW-SPST开关,P3口内含上拉电阻,当开关打开时逻辑值为1,开关闭合时逻辑值为0。仿真完成后,将实验板的P1口用8芯线接到LED接口J7,P3.2、P3.3分别接到SW1、SW2,P3.0、P3.1接到J8的RXD、TXD(下载HEX文件),然后就可以运行STC_ISP软件下载实验程序,每次下载必须先拔USB电源线然后再插上才能开始下载。四、实验内容参照实验电路编写程序,控制LED的工作状态。拨动开关SW1、SW2分别实现4种不同的工作方式:本实验中要实现循环输出,最常用的方法是循环计数实现循环次数控制,对计数器值进行查表转换得出输出值,输出到P1口进行显示,灯亮表示输出为“0”,灯灭表示输出为“1”。本实验中的延时,用软件延时方法产生,延时时间=程序总机器周期数*循环次数*机器周期。输出表格确定发光模式,实验中定义表格如下:TAB1:DB01H,02H,04H,08H,10H,20H,40H,80H(SW3,SW4为:00)TAB2:DB03H,06H,0CH,18H,30H,60H,0CH,81H(SW3,SW4为:01)TAB3:DB80H,40H,20H,10H,08H,04H,02H,01H(SW3,SW4为:10)TAB4:DB03H,06H,0CH,30H,60H,0CH,F0H,0FH(SW3,SW4为:11)TAB4:DB用户自己定义(SW3,SW4为:11)输入信号使用P3.2和P3.3,可以确定4种模式。程序流程图如下:子程序入口读取输入模式根据输入模式选择表格查表输出延时返回开始P1、P3初始化调循环计数程序调转换输出程序图1.1主程序图1.2转换输出子程序五、编程提示:(延时程序)DELAY:MOVR1,#10;2uSLOOP:MOVR2,#250;2uSDJNZR2,$;4uSDJNZR1,LOOP;4uSRET延时时间的计算:若系统的晶振频率为6MHz(本实验晶振频率为12MHz),即一个机器同期时间为12/6MHz即2uS,所以该段程序的执行时间为:2+(2+4×250+4)×10=10.06mS六、实验程序ORG0000HSTART:MOVP1,#00HMOVP3,#00HSETBP3.2SETBP3.3LOOP1://SETBP3.2JBP3.2,SW2//SETBP3.3JBP3.3,S01S00:MOVDPTR,#TAB1AJMPSHOWS01:MOVDPTR,#TAB2AJMPSHOWSW2://SETBP3.3JBP3.3,S11S10:MOVDPTR,#TAB3AJMPSHOWS11:MOVDPTR,#TAB4AJMPSHOWSHOW:MOVR0,#8SH:CLRAMOVCA,@A+DPTRMOVP1,ALCALLDELAY1INCDPTRDJNZR0,SHAJMPLOOP1DELAY1:MOVR7,#20LOOP2:ACALLDELAYDJNZR7,LOOP2RETDELAY:MOVR1,#20//2uSLOOP:MOVR2,#250//2uSDJNZR2,$//4uSDJNZR1,LOOP//4uSRETTAB1:DB01H,02H,04H,08H,10H,20H,40H,80H//(SW3,SW4为:00)TAB2:DB03H,06H,0CH,18H,30H,60H,0CH,81H//(SW3,SW4为:01)TAB3:DB80H,40H,20H,10H,08H,04H,02H,01H//(SW3,SW4为:10