2单片机IO口控制实验实验报告

合集下载

单片机原理与应用 实验二 IO口的使用实验

单片机原理与应用 实验二 IO口的使用实验

1.实验二单片机输入及输出实验(1)实验要求1)由于实验学时很少,请提前预习和思考实验内容,将流程图及程序准备好,到实验室进行调试和验证。

2)由于实验室计算机C盘和D盘被保护,所以开始实验前在计算机E盘建立自己的文件夹,文件夹最好为英文名称。

实验中及时保存自己的源文件。

3)P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮,每个发光二极管点亮时间为1秒;仔细思考,画出程序流程图;编写程序并写清注释;4)P2.0、P2.1作输入口接两个拨动开关,P1作输出口,接八个发光二极管,编写程序读取开关状态,根据此状态,改变八个发光二极管的点亮方式(至少两种)。

编程时应注意P2.0、P2.1作为输入口时应先置1,才能正确读入值。

仔细思考,画出程序流程图;编写程序并写清注释;5)考虑使用定时器完成需要的延时,可以采用查询或是中断的方式。

首先根据延时时间确定定时器的工作方式(13位、16位还是8位),然后据此计算出定时器初值,最后确定选择使用T0还是T1,并设置相应特殊功能寄存器(TMOD、TCON)。

可根据课件中的例子进行修改。

(2)实验目的1)学习单片机的I/O口的使用方法;2)学习延时子程序的编写和使用;3)学习分支指令的使用;4)学习使用定时器完成延时的方法。

(3)实验电路及连线连线连接孔1 连接孔21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L79 P2.0 S010 P2.1 S1(4)实验说明1)对于MCS51MCU,P2口是准双向口。

它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P2口用为输入口时,必须先对它置“1”。

若不先对它置“1”,读入的数据是不正确的。

2)8051延时子程序的延时计算问题,需要考虑系统晶振和延时时长,对于较长的延时需要采用多重循环的方式得到。

如实验要求发光二极管点亮1秒,请参考课件上延时50ms的例子进行修改。

2单片机IO口控制实验实验报告

2单片机IO口控制实验实验报告
为保证引脚上的信号能正确读入,在读入操作前应首先向锁存器写1;
单片机复位后,锁存器自动被置1;
一般情况下,如果P0口已作为地址/数据复用口时,就不能再用作通用I/O口使用;
P0口能驱动8个TTL负载。
7、P1口的结构及特点:
⑴ P1口结构与运作
一个数据输出锁存器,用于输出数据的锁存;
两个三态输入缓冲器,BUF1用于读锁存器,BUF2用于读引脚;
15、中断控制:
a、中断允许寄存器IE
CPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。字节地址为A8H,可位寻址。格式如下:
IE对中断的开放和关闭为两级控制
总的开关中断控制位EA(IE.7位):
EA=0,所有中断请求被屏蔽。
EA=1,CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的5个中断请求允许控制位决定。
(2)编写程序,用P1.0~P1.2口连LED ,用按键开关KEY1作为外部中断输入INT0控制LED的亮和灭。(每按一次按键LED状态取反一次)。
四、protel电原理图
1、
2、
五、程序流程图
1、
Y N
2、
主程序流程图
中断程序流程图
六、程序清单
1、
ORG 8000H ;硬件仿真程序
LJMP Main
数据输出驱动电路,由场效应管VT和片内上拉电阻R组成。
⑵ P1口的特点
P1口由于有内部上拉电阻,没有高阻抗输入状态,所以称为准双向口。作为输出口时,不需要再在片外拉接上拉电阻;
P1口读引脚输入时,必须先向锁存器写入1,其原理与P0口相同;
P1口能驱动4个TTL负载。
8、P2口结构及特点:
⑴ P2口结构与运作

实验报告二_IO口的应用

实验报告二_IO口的应用

华南理工大学广州学院学生实验报告课程名称:单片机实验华南理工大学广州学院自动化专业1班姓名:陈惠玲实验名称:I/O口的应用实验日期:2012年10月19日指导老师:文丽一、实验目的了解单片机并行I/O口的结构和基本原理,掌握P0,P1,P2,P3作通用I/O口的使用方法二、实验内容1.学习第四章例【4-1】至例【4-3】,掌握流水灯的编程方法,I/O作为输入的应用2. 编程:以锐志单片机开发板为核心,设计一个节日彩灯控制器,设计要求如下:在单片机的P0口接有8个发光二极管为指示灯,P1.0~P1.3接有4个按键开关,当不同引脚上的按键按下时,实现如下的功能:按下P1.0脚的按键——8个灯全亮然后全灭,再全亮然后全灭,交替闪亮。

按下P1.1脚的按键——停止点亮8个灯,所有灯灭。

按下P1.2脚的按键——LED指示灯由左向右流动点亮。

按下P1.3脚的按键——LED指示灯由右向左流动点亮。

三、实验编程:#include<reg52.h>#include<intrins.h>sbit key0=P1^4;sbit key1=P1^5;sbit key2=P1^6;sbit key3=P1^7;#define uchar unsigned charvoid time(int x){int i,j;for(i=x;i>0;i--){for(j=110;j>0;j--);}}void main(){uchar a,b,c,t,t1;while(1){if(key0==0){time(10);if(key0==0){a=1;do{P0=0xff;time(500);P0=0;time(500);if(key1==0){time(10);if(key2==0){a=0;P0=0xff;}}}while(a);}}if(key2==0){time(10);if(key2==0){b=1;t=0xfe;do{P0=t;time(500);t=_crol_(t,1);if(key3==0){b=0;}}while(b);}}if(key3==0){time(10);if(key3==0){c=1;t1=0x7f;do{P0=t1;time(500);t1=_cror_(t1,1);if(key0==0|key1==0|key2==0){c=0;}}while(c);}}}}四、实验报告心得体会通过这次实验,让我想起了不少在暑假实验的知识,虽然这些程序之前都有训练过,但是已忘了不少。

【免费下载】单片机io口控制实验报告

【免费下载】单片机io口控制实验报告

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

实验二 IO 口方式基础应用实验

实验二  IO 口方式基础应用实验

电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:单片机原理与接口技术实验班级:姓名:学号:组别:实验名称:实验二I/O 口方式基础应用实验实验时间:成绩:一、实验目的和任务1、掌握80C51单片机程序的调试与下载方法。

2、掌握80C51单片机并口的特性及程序控制方法。

3、掌握步进电机转向、转速和角度控制原理。

4、掌握步进电机与单片机的接口及程序控制方法。

二、实验原理简介P0口控制8个发光管的电路结构,P0口某口线输出低电平时,相应的发光管点亮,口线输出高电平时发光管熄灭。

在做发光管相关实验时,应将实验箱上LED101~LED108发光管右上侧的拨码开关JUMP2拨到ON一侧,使发光管限流电阻公共端连接到MCU1电源正极(即Vcc端)。

VccMCU1JUMP2STC12C5A60S239 L101 470ΩP0.038 L102 470ΩP0.137 L103 470ΩP0.236 L104 470ΩP0.335 L105 470ΩP0.434 L106 470ΩP0.533 L107 470ΩP0.632 L108 470ΩP0.7图2-1 发光管控制电路步进电机是一种将电脉冲转化为角位移的执行机构,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

由于步进电动机能直接接受数字量,所以特别适合利用单片机进行控制。

ZSC-1实验箱MCU1利用P2口的高4位控制一个四相步进电机(其最小步距角为5.625°/64),如图3-1所示。

某口线输出低电平时,相应的功率三极管导通,其所连接的一相线圈通电,口线输出高电平时线圈断电。

程序以单4拍、双4拍或4-8拍方式依次输出各相序字,就可控制步进电机转动,颠倒相序顺序,可改变步进电机的转向。

改变各相序字之间的时间间隔可控制步进电机的转速。

图3-1中4个独立按键可用于电机控制命令的输入。

单片机原理及应用实验二报告

单片机原理及应用实验二报告

单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。

二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。

三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。

IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。

四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。

2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。

3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。

五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。

i0口输入输出实验报告

i0口输入输出实验报告

竭诚为您提供优质文档/双击可除i0口输入输出实验报告篇一:实验二I-o口输入、输出实验报告单片机实验报告2姓名学号时间地点实验题目I/o口输入、输出实验一、实验目的1.学习I/o口的使用方法。

2.学习延时子程序、查表程序的编写和使用。

二、实验仪器和设备pc机、wAVe软件、仿真器+仿真头、实验板、电源等。

三、实验说明本实验1通过单片机的I/o口控制LeD的亮灭,从而观察I/o口的输出。

实验2通过单片机的I/o口接受按键动作信息,然后通过LeD和数码管指示。

通过本实验学生可以掌握单片机I/o口输入输出的控制方法,同时也可以掌握单片机延时子程序、查表程序的编写和调试方法。

要求预先编写好程序并通过伟福仿真软件调试。

四、实验内容1、p0口做输出口,接八只LeD,编写程序,使LeD循环点亮,间隔0.5秒。

2、p1.0--p1.7作输入口接拨动开关s0--s7;p0.0--p0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,同时将开关编号(0—7)显示在LeD数码管上。

编程时应注意p1作为输入口时应先置1,才能正确读入值。

五、实验电路连线p0.0----LeD0p1.0-----s0p0.1----LeD1p1.1-----s1p 0.2----LeD2p1.2-----s2p0.3----LeD3p1.3------s3p 0.4----LeD4p1.4------s4p0.5----LeD5p1.5------s5 p0.6----LeD6p1.6------s7p0.7----LeD7p1.7------s8 实验1:p0口循环点灯实验2:p1、p0口输入输出agfbabcdefgh(dp)eh(dp)实验2:LeD数码管各段与I/o的连接dcp2.0p2.1p2.2p2.3p2.4p2.5p2.6p2.7六、程序框图及程序p0口循环点灯oRg0000hmoVA,#07FhLp:moVp0,ARRALcALLDeLAYLcALLDeLAYsJmpLpDeLAY:moVR2,#0FAhL1:moVR3,#0FAhL2:DJnZR3,L2DJnZR2,L 1ReT;设定程序汇编起始地址;设置初始值01111111;点亮LeD0;将A里面的值循环右移一位;调用延时子程序;循环点亮LeD灯;0.25s的延时程序;2*250=500us;500*250*2=250000us;返回主程序p1口输入/输出oRg0000Loop:moVA,p1cJneA,0FFh,LeDsJmpLoopLeD:moVp0, AAcALLDeLAYmoVR5,#00hLoop1:RRcAJncLoop2IncR5sJmpLoo p1Loop2:moVDpTR,#TAbmoVA,R5;设定起始地址;读p1口;查询是否有按键按下;等待;有键按下,将值读入p0;调用延时子程序;置计数初值=0;输入右移1位;若cy=0,则数码显示;cy=1,则计数加1;跳回继续移位;所查表的首地址赋给DpTR;计数值做偏移量moVp1,#0FFh;p1口置1moVcA,@A+DpTRmoVp2,A;显示相应按键值sJmpLoopTAb:Db60h,0DAh,0F2h,66h;Db0b6h,0beh,0e0h,0Feh;DeLAY:moVR2,#0FAhL1:moVR3,#0FAhL2:DJnZR3,L2DJnZR2,L1ReT;0.25s的延时程序;2*250=500us;500*250*2=250000us;返回主程序七、思考题1、实验1欲改变LeD循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算方法。

单片机实验 IO口的输入输出实验.

单片机实验 IO口的输入输出实验.

实验二 I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、参考程序框图三、程序设计1、P0口循环点亮程序 ORG 0030HSTART : MOV P2,#00H; //消影 MOV A ,#01H; // LOOP : MOV P2 ,A; //点亮一个led 灯ACALL DELAY; //延时500ms RL A; //左移一位 AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序 DE1 : MOV R6,#200; DE2 : MOV R5,#123; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RET END2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化 MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh 值 MOV DPTR,#TABLE; //表地址存入DPTR MOV 50H,#0FEH; //比较初值载入地址50h L0 :MOV A,P1; //按键消抖 CJNE A,#0FFH,L1; AJMP L0; L1 :MOV A,P1;CJNE A,#0FFH,LL1; AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h 中数据相等 MOV P0,A; //相等输出对应led 灯 MOV A,#00H; MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管 LCALL DELAY; //延时LJMP START; //返回程序开头 LL2 :XCH A,50H; //交换数据 RL A; //左移XCH A,50H; //再次交换,此时地址50h 中数据左移一位 INC DPTR; //表格数据地址加一 LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序 DE1 : MOV R6,#28H; DE2 : MOVR5,#5AH; DJNZ R5,$;DJNZ R7,DE1; RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据 END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化 MOV P1,#0FFH; //P1口赋FFH 初值 MOVP0,#00H;START : MOV P2,#00H; //P2清0; MOV P0,#00H; //P0清0; MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询 LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动 MOV A,R1;CJNE A, #0FFH,LL1; AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码 CPL A; //A取反MOV P0,A; //输出到P0口 LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入 MOV P2,#5BH; //以下同上 CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下 MOV P2,#4FH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下 MOV P2,#6DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下 MOV P2,#7DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下 MOV P2,#07H; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下 MOV P2,#7FH; CPL A; MOVP0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头 DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H; DE2 : MOV R5,#5AH; DJNZ R5,$; DJNZ R6,DE2; DJNZR7,DE1; RET END四、思考题1、LED 循环方向更改:RL A; 改成 RR A;1S 的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200; DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1; RET 2、提高电阻阻值3、一般为5V 或者3.3V 。

单片机io口控制实验报告

单片机io口控制实验报告

单片机io口控制实验报告单片机实验报告实验名称:I/O 口控制姓名:张昊学号:110404247 班级:通信 2 班时间:20__.11.19南京理工大学紫金学院电光系一、实验目的1、学习 I/O 口的使用。

2、学习延时子程序的编写和使用。

3、掌握单片机编程器的使用和芯片烧写方法。

二、实验原理1、广告流水灯实验(1)做单一灯的左移右移,八个发光二极管 L1~L8 分别接在单片机的P1.0~P1.7 接口上,输出“0”的时候,发光二极管亮,开始时P1.0->P1.1->P1.2->P1.3->...->P1.7->P1.6->...P1.0 亮,重复循环。

(2)系统板上硬件连线:把“单片机系统”A2 区的 J61 接口的P1.0~P1.6端口与 D1 区的 J52 接口相连。

要求:P1.0 对应着L1,P1.1 对应L2,......,P1.7 对应着 L8。

P1 口广告流水灯实验原理图如下程序设计流程:流程图如下2、模拟开关实验(1)监视开关 K1(接在 P3.0 端口上),用发光二极管 L1(接在单片机P1.0 端口上)显示开关状态,如果开关合上,L1 亮,开关打开,L1 熄火。

(2)系统板上硬件连线:把“单片机系统”A2 区的 P1.0 端口用导线连接到 D1 区的 LED1 端口上;把“单片机系统”A2 区的P3.0 端口用导线连接到 D1 区的 KEY1 端口上;实验原理图如下图程序设计流程否是二、实验内容1、流水灯#include<reg51.h> sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7;unsigned char count=0; bit flag; void main { 开始开关闭合否 L1 灭 L1 亮P1=0_ff; TMOD=0_01; TH0=55536/256; TL0=55536%256;EA=1; ET0=1; TR0=1; while(1) { p10=0; while(flag==0);flag=0; p10=1;p11=0; while(flag==0); flag=0; p11=1;p12=0; while(flag==0); flag=0; p12=1;p13=0; while(flag==0);flag=0; p13=1;p14=0; while(flag==0); flag=0; p14=1;p15=0; while(flag==0); flag=0; p15=1;p16=0; while(flag==0);flag=0; p16=1;p17=0; while(flag==0); flag=0; p17=1; } } void t0_srv interrupt 1 { TH0=55536/256; TL0=55536%256; count++; if(count==10) { flag=1;count=0; } } 2、模拟开关#include<reg51.h> sbit p30=P3^0; sbit p10=P1^0; void main {while(1) { if(p30==0)p10=0; elsep10=1; } }三、小结与体会通过本次实验学会了 I/O 口的使用,学会了延时子程序的编写和使用以及掌握了单片机编程器的使用和芯片烧写方法。

单片机实验报告二 单片机IO口实验

单片机实验报告二 单片机IO口实验

南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。

2.熟练掌握STC型开发板的使用方法和注意事项。

3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。

其中流水灯的变化形式多样。

(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。

根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。

图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。

单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。

单片机实验报告2

单片机实验报告2

《单片机应用系统设计》实验报告院系:仪器科学与工程学院专业:测控技术与仪器实验室:机械楼5楼同组人员:评定成绩:审阅教师:硬件实验一I/O口输入/输出及控制实验Ⅰ、I/O口输入/输出实验一、实验目的1、学习单片机I/O口的使用方法2、学习延时子程序的编写和使用二、实验内容1、I/O口输出:P1口做输出口,接八只发光二极管,编写程序让发光二极管循环点亮。

2、I/O口输入/输出:P1.0、P1.1做输入口接两个拨动开关;P1.2、P1.3做输出口,接两个发光二极管。

编写程序读取开关状态,将此状态在发光二极管上显示出来。

编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。

三、实验步骤1、I/O口输出硬件连接连线连接孔1 连接孔21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L7MCS51的P1口循环点灯2、I/O口输入/输出硬件连接连线连接孔1 连接孔21 K4 P1.02 K5 P1.13 P1.2 L44 P1.3 L5MCS51的P1口输入/输出3、实验说明(1)对于MCS51,P1口是准双向口。

它作为输出口时与一般的双向口使用方法想同;但准双向口用作输入口时,因其结构特点必须对它置“1”,否则读入的数据容易产生错误。

(2)8051延时子程序的延时计算问题,对于程序DELAY:MOV R6, #0HMOV R7, #0HDELAYLOOP:DJNZ R6, DELAYLOOPDJNZ R7, DELAYLOOPRET查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:12/12MHZ=1ms,该延时子程序延时:(256X255+2)X2X1us=130ms。

4、分别连接硬件并执行相关程序,记录结果。

四、提高要求修改I/O口输出程序,先1、3、5、7灯亮,延时后2、4、6、8灯亮,交替点亮。

单片机实验 IO口的输入输出实验.

单片机实验 IO口的输入输出实验.

实验二 I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、参考程序框图三、程序设计1、P0口循环点亮程序 ORG 0030HSTART : MOV P2,#00H; //消影 MOV A ,#01H; // LOOP : MOV P2 ,A; //点亮一个led 灯ACALL DELAY; //延时500ms RL A; //左移一位 AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序 DE1 : MOV R6,#200; DE2 : MOV R5,#123; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RET END2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化 MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh 值 MOV DPTR,#TABLE; //表地址存入DPTR MOV 50H,#0FEH; //比较初值载入地址50h L0 :MOV A,P1; //按键消抖 CJNE A,#0FFH,L1; AJMP L0; L1 :MOV A,P1;CJNE A,#0FFH,LL1; AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h 中数据相等 MOV P0,A; //相等输出对应led 灯 MOV A,#00H; MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管 LCALL DELAY; //延时LJMP START; //返回程序开头 LL2 :XCH A,50H; //交换数据 RL A; //左移XCH A,50H; //再次交换,此时地址50h 中数据左移一位 INC DPTR; //表格数据地址加一 LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序 DE1 : MOV R6,#28H; DE2 : MOVR5,#5AH; DJNZ R5,$;DJNZ R7,DE1; RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据 END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化 MOV P1,#0FFH; //P1口赋FFH 初值 MOVP0,#00H;START : MOV P2,#00H; //P2清0; MOV P0,#00H; //P0清0; MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询 LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动 MOV A,R1;CJNE A, #0FFH,LL1; AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码 CPL A; //A取反MOV P0,A; //输出到P0口 LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入 MOV P2,#5BH; //以下同上 CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下 MOV P2,#4FH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下 MOV P2,#6DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下 MOV P2,#7DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下 MOV P2,#07H; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下 MOV P2,#7FH; CPL A; MOVP0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头 DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H; DE2 : MOV R5,#5AH; DJNZ R5,$; DJNZ R6,DE2; DJNZR7,DE1; RET END四、思考题1、LED 循环方向更改:RL A; 改成 RR A;1S 的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200; DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1; RET 2、提高电阻阻值3、一般为5V 或者3.3V 。

实验2 单片机IO口实验

实验2 单片机IO口实验

实验2 单片机IO口实验一、实验要求实现LED跑马灯程序。

二、实验目的1、学习使用uVision编写程序;2、掌握IO读写方法;3、了解LED驱动方法三、实验内容1、实验步骤启动PC机,打开uVision2软件。

将下面的程序编译通过,并下载到51单片机开发板上,观察LED状态:#include<reg52.h> //包含头文件,一般情况不需要改动,sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,void main (void){unsigned int a,b; //定义变量while(1){for(b=0;b<10;b++)for(a=0; a<3000; a++); //延时LED0=0;for(b=0;b<10;b++)for(a=0; a<3000; a++); //延时LED0=1;}}2、修改上面的代码,实现LED0,亮1s,灭2秒,亮3秒,灭4秒,亮5秒,灭6秒,重复此过程。

#include<reg52.h> //包含头文件,一般情况不需要改动,sbit LED0=P1^0;// 用sbit 关键字定义 LED到P1.0端口,void delay(void){unsigned int a,b; //定义变量for(b=0;b<10;b++){for(a=0;a<28000;a++); //延时}}void time(int flag){int i;for( i=0;i<flag;i++)delay();}void main (void){int flag=0;while(1){LED0=0;time(1);LED0=1;time(2);LED0=0;time(3);LED0=1;time(4);LED0=0;time(5);LED0=1;time(6);四、实验总结实验主要考察了用程序操控单片机实现对灯的操控。

单片机实验-IO口的输入输出实验

单片机实验-IO口的输入输出实验

实验二I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、参考程序框图三、程序设计1、P0口循环点亮程序ORG 0030HSTART : MOV P2,#00H; //消影MOV A ,#01H; //LOOP : MOV P2 ,A; //点亮一个led灯ACALL DELAY; //延时500msRL A; //左移一位AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh值MOV DPTR,#TABLE; //表地址存入DPTRMOV 50H,#0FEH; //比较初值载入地址50hL0 :MOV A,P1; //按键消抖CJNE A,#0FFH,L1;AJMP L0;L1 :MOV A,P1;CJNE A,#0FFH,LL1;AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h中数据相等MOV P0,A; //相等输出对应led灯MOV A,#00H;MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管LCALL DELAY; //延时LJMP START; //返回程序开头LL2 :XCH A,50H; //交换数据RL A; //左移XCH A,50H; //再次交换,此时地址50h中数据左移一位INC DPTR; //表格数据地址加一LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R7,DE1;RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化MOV P1,#0FFH; //P1口赋FFH初值MOV P0,#00H;START : MOV P2,#00H; //P2清0;MOV P0,#00H; //P0清0;MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动MOV A,R1;CJNE A, #0FFH,LL1;AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码CPL A; //A取反MOV P0,A; //输出到P0口LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入MOV P2,#5BH; //以下同上CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下MOV P2,#4FH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下MOV P2,#6DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下MOV P2,#7DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下MOV P2,#07H;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下MOV P2,#7FH;CPL A;MOV P0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND四、思考题1、LED循环方向更改:RL A; 改成RR A;1S的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RET2、提高电阻阻值3、一般为5V或者3.3V。

实验二单片机IO口的使用

实验二单片机IO口的使用

实验二单片机IO口的使用实验目的:掌握单片机IO口的使用方法,了解IO口的输入输出功能。

一、实验介绍在单片机系统中,IO口是通过端口来实现与外部设备的通信。

IO口可以用来输入控制信号或者输出数据信号,是单片机与外部世界交互的重要接口。

二、实验器材与工具1.单片机开发板2.扁平灯泡3.蜂鸣器4.电阻、电容等元器件5.逻辑分析仪三、实验步骤1.简单的IO口输出实验将一个扁平灯泡连接到单片机的一个IO口上,并将该IO口配置为输出模式。

实验中,可以通过控制该IO口的高低电平来控制灯泡的亮灭。

2.IO口输入实验将一个开关连接到单片机的一个IO口上,并将该IO口配置为输入模式。

实验中,可以读取该IO口的电平状态,来判断开关的状态。

3.组合实验将多个扁平灯泡和开关连接到单片机的IO口上,并通过控制和读取IO口的电平状态来实现各种功能。

可以实现灯泡的闪烁、扁平灯泡的亮度调节、蜂鸣器的控制等功能。

四、实验原理1.IO口模式设置单片机内部有寄存器用于控制IO口的工作模式。

通过设置相应的寄存器来将指定的IO口配置为输入或者输出模式。

2.IO口输出控制IO口的输出控制是通过操作相应的寄存器来实现的。

输出操作可以将指定的IO口设置为高电平或者低电平。

3.IO口输入读取IO口的输入读取也是通过操作相应的寄存器来实现的。

读取操作可以获取指定IO口的电平状态,以判断外部设备的状态。

五、实验总结通过这次实验,我学会了单片机IO口的配置与使用方法。

IO口是单片机与外部设备交互的重要接口,掌握了IO口的使用方法后,可以实现各种功能,如灯光控制、开关检测等。

同时,我也了解到了IO口的原理和应用场景,为以后的电子设计打下了基础。

实验二 简单I、O口扩展试验.

实验二   简单I、O口扩展试验.

实验二简单I/O口扩展实验——交通灯控制实验一、实验目的:1.学习在单片机系统中扩展简单I/O接口的方法。

2.学习数据输出程序的设计方法。

3.学习模拟交通灯控制的实现方法。

二、实验设备:EL-MUT-III型单片机实验箱、8051CPU模块三、实验内容:扩展实验箱上的74LS273做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。

四、实验原理:要完成本实验,首先必须了解交通路灯的亮灭规律。

本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。

不妨将L1(红、L2(绿、L3(黄做为东西方向的指示灯,将L5(红、L6(绿、L7(黄做为南北方向的指示灯。

而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

各发光二极管的阳极通过保护电阻接到+5V的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。

五、实验原理图六、实验步骤:74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO,此时74LS273的片选地址为CFA0H~CFA7H之间任选。

运行实验程序,观察LED显示情况是否与实验内容相符。

七、程序框图:八、参考程序:T3.ASMNAME T3 ;I/O口扩展实验一PORT EQU 0CFA0H ;片选地址CS0CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭ACALL DISP ;调用273显示单元(以下雷同ACALL DE3S ;延时3秒LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮ACALL DISPACALL DE10S ;延时10秒MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮ACALL DISPMOV R2,#05H ;R2中的值为黄灯闪烁次数TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮ACALL DISPACALL DE02S ;延时0.2秒MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮ACALL DISPACALL DE02S ;延时0.2秒DJNZ R2,TTT ;返回TTT,使东西路口黄灯闪烁五次 MOV A,#11H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时0.2秒MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮ACALL DISPACALL DE10S ;延时10秒MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭ACALL DISPMOV R2,#05H ;黄灯闪烁五次GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮ACALL DISPACALL DE02S ;延时0.2秒MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭ACALL DISPACALL DE02S ;延时0.2秒DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次 MOV A,#03H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时0.2秒JMP LLL ;转LLL循环DE10S: MOV R5,#100 ;延时10秒JMP DE1DE3S: MOV R5,#30 ;延时3秒JMP DE1DE02S: MOV R5,#02 ;延时0.2秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3DJNZ R6,DE2DJNZ R5,DE1RETDISP: MOV DPTR,#PORT ;273显示单元CPL AMOVX @DPTR,ARETEND问题1、START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭,为什么要给A赋值11H?问题2、273显示单元的口地址是多少?作用是如何实现的?问题3、延时10秒子程序,时间是怎么算的?。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机IO口控制实验一、实验目的1、熟悉MCS-51的I/O结构;2、掌握MCS-51 I/O的使用方法;3、掌握MCS-51的中断机制。

二、实验原理1、MCS-51单片机的硬件结构片内结构:2、内部数据存储器(字节地址为00H~0FH):3、SFR的名称及其分布:4、I/O端口地址:5、P0~P3端口功能总结:(1)P0~P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。

而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MUX。

P0口的MUX的一个输入端为“地址/数据”信号。

P2口的MUX的一个输入信号为“地址”信号。

(2)在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。

原因:P0口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。

为此,P0口的输出缓冲器应为三态门。

P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。

P1~P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的-准双向口。

(3)P3口的口线具有第二功能,为系统提供一些控制信号。

因此P3口增加了第二功能控制逻辑。

这是P3口与其它各口的不同之处。

6、P0口结构及特点:⑴P0口结构与运作1个输出锁存器,用于进行输出数据的锁存;2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;1个多路开关MUX,它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出。

在控制信号的的控制下能实现对锁存器输出端和地址/数据线之间的切换;由两只场效应管组成的输出驱动电路。

⑵P0口的特点P0口是一个双功能的端口:地址/数据分时复用口和通用I/O口;具有高电平、低电平和高阻抗3种状态的I/O端口称为双向I/O端口。

P0口作地址/数据总线复用口时,相当于一个真正的双向I/O口。

而用作通用I/O口时,由于引脚上需要外接上拉电阻,端口不存在高阻(悬空)状态,此时P0口只是一个准双向口;为保证引脚上的信号能正确读入,在读入操作前应首先向锁存器写1;单片机复位后,锁存器自动被置1;一般情况下,如果P0口已作为地址/数据复用口时,就不能再用作通用I/O口使用;P0口能驱动8个TTL负载。

7、P1口的结构及特点:⑴P1口结构与运作一个数据输出锁存器,用于输出数据的锁存;两个三态输入缓冲器,BUF1用于读锁存器,BUF2用于读引脚;数据输出驱动电路,由场效应管VT和片内上拉电阻R组成。

⑵P1口的特点P1口由于有内部上拉电阻,没有高阻抗输入状态,所以称为准双向口。

作为输出口时,不需要再在片外拉接上拉电阻;P1口读引脚输入时,必须先向锁存器写入1,其原理与P0口相同;P1口能驱动4个TTL负载。

8、P2口结构及特点:⑴P2口结构与运作一个数据输出锁存器,用于输出数据的锁存;两个三态输入缓冲器,BUF1用于读锁存器,BUF2用于读引脚;一个多路开关MUX,它的一个输入来自锁存器的Q端,另一个输入来自内部地址的高8位;数据输出驱动电路由非门M,场效应管VT和片内上拉电阻R组成。

⑵P2口的特点P2口用作高8位地址输出线应用时,与P0口输出的低8位地址一起构成16位的地址总线,可以寻址64KB地址空间。

当P2口作高8位地址输出口时,其输出锁存器原锁存的内容保持不变。

作为通用I/O口使用时,P2口为准双向口,功能与P1口一样。

P2口能驱动4个TTL负载。

9、P3口结构及特点:⑴P3口结构组成一个数据输出锁存器,用于输出数据的锁存;3个三态输入缓冲器,BUF1用于读锁存器,BUF2、BUF3用于读引脚和第二功能数据的缓冲输入;数据输出驱动电路,由与非门M,场效应管VT和片内上拉电阻R组成。

⑵P3口的特点P3口内部有上拉电阻,不存在高阻输入状态,是一个准双向口;P3口作第二功能的输出/输入或作通用输入时,均需将相应的锁存器置1。

实际应用中,由于复位后P3口锁存器自动置1,已满足第二功能运作条件,所以可以直接进行第二功能操作;P3口的某位不作为第二功能使用时,则自动处于通用输出/输入口功能,可作为通用输出/输入口使用;作通用输出/输入口使用时,输入信号取自缓冲器BUF2的输出端,作第二功能使用时,输入信号取自缓冲器BUF3的输出端;P3口能驱动4个TTL负载。

10、IO口锁存器操作:IO口锁存器值与IO口值不一定一致,应采用读锁存器-修改-写锁存器来进行IO控制。

11、MCS-51的中断系统:单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。

对事件的整个处理过程,称为中断处理(或中断服务)。

12、五个中断请求源:(1)INT0*—外部中断请求0,由引脚INT0*输入,中断请求标志为IE0。

(2)INT1*—外部中断请求1,由引脚INT1*输入,中断请求标志为IE1。

(3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。

(4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。

(5)串行口中断请求,中断请求标志为TI或RI。

由特殊功能寄存器TCON和SCON的相应位锁存。

13、复位及中断入口地址表:14、MCS-51中断系统的结构:5个中断请求源;两个中断优先级,可两级嵌套。

15、中断控制:a、中断允许寄存器IECPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。

字节地址为A8H,可位寻址。

格式如下:IE对中断的开放和关闭为两级控制总的开关中断控制位EA(IE.7位):EA=0,所有中断请求被屏蔽。

EA=1,CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的5个中断请求允许控制位决定。

IE中各位的功能如下:(1)EA:中断允许总控制位0:CPU屏蔽所有的中断请求(CPU关中断);1:CPU开放所有中断(CPU开中断)。

(2)ES:串行口中断允许位0:禁止串行口中断;1:允许串行口中断。

(3)ET1:定时器/计数器T1的溢出中断允许位(4)EX1:外部中断1中断允许位(5)ET0:定时器/计数器T0的溢出中断允许位(6)EX0:外部中断0中断允许位。

MCS-51复位后,IE清0,所有中断请求被禁止。

若使某一个中断源被允许中断,除了IE相应的位的被置“1”,还必须使EA位=1。

改变IE的内容,可由位操作指令来实现,即:SETB bit;CLR bit。

b、中断优先级寄存器IP两个中断优先级,可实现两级中断嵌套。

归纳为两条基本规则:(1)低优先级可被高优先级中断,反之则不能。

(2)同级中断不会被它的同级中断源所中断。

若CPU正在执行高优先级的中断,则不能被任何中断源所中断。

中断优先级寄存器IP,其字节地址为B8H。

IP各个位的含义:(1)PS——串行口中断优先级控制位1:高优先级中断;0:低优先级中断。

(2)PT1——定时器T1中断优先级控制位1:高优先级中断;0:低优先级中断。

(3)PX1——外部中断1中断优先级控制位1:高优先级中断;0:低优先级中断。

4)PT0——定时器T0中断优先级控制位1:高优先级中断;0:低优先级中断。

(5)PX0——外部中断0中断优先级控制位1:高优先级中断;0:低优先级中断。

由软件可改变各中断源的中断优先级。

16、INT0/1相关控制位:IT0/IT1——触发方式选择位0:低电平触发方式,-INT0/1低电平时IE0/IE1=0,INT0/1高电平时IE0/IE1=1。

1:下降沿触发方式,检测到下降沿,则使IE0/IE1=1,CPU相应中断后自动清除IE0/IE1。

三、实验内容(1)编写程序,用P1.0~P1.2口连LED,查询拨盘开关SW1的状态来控制LED的亮和灭(P1.7口接SW1)。

(2)编写程序,用P1.0~P1.2口连LED ,用按键开关KEY1作为外部中断输入INT0控制LED的亮和灭。

(每按一次按键LED状态取反一次)。

四、protel电原理图1、2、五、程序流程图1、2、主程序流程图中断程序流程图六、程序清单1、ORG 8000H ;硬件仿真程序LJMP MainORG 80F0H ;硬件仿真调试程序Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED:CLR P1.0CLR P1.1CLR P1.2 ;P1.0~P1.2清零SJMP MainSETLED:SETB P1.0SETB P1.1SETB P1.2 ;P1.0~P1.2置1SJMP Main;END2、ORG8000HLJMP MainORG8003HLJMP INT0;跳转到中断服务程序ORG8100HMain:CLR P1.0;给LED一个初态,熄灭CLR P1.1CLR P1.2BACK1:JB P3.2,BACK1;等待Key1中断进入,INT0引脚变低SETB TR0;为T0的启动做准备SETB IT0;指定INT0为边沿触发方式SETB EX0;开放INT0中断SETB EA;开放CPU的中断SJMP $;等待中断ORG8200H;INT0中断服务程序INT0:CPL P1.0;LED状态取反一次CPL P1.1CPL P1.2RETI;END七、实验记录1、在keil环境下编辑汇编程序,且调试无差错。

将程序下载到单片机后,程序运行顺利,实现了预期的功能,即随着开关S0的状态改变,LED 灯D0、D1、D2点亮或熄灭。

2、在keil环境下编辑汇编程序,且调试无差错。

将程序下载到单片机后,程序运行顺利,实现了预期的功能,即每按一次按键S0,LED灯D0、D1、D2状态取反一次。

八、实验分析本次实验较为简单,进行的也很顺利,实现了预期的功能。

在试验过程中也加深了对I//O 口和外部中断尤其是INT0的理解。

在中断实验中,进一步理解了中断服务程序的结构,即保护现场、处理中断的程序、恢复现场、中断返回。

其中RETI的作用有两个,弹出PC和清除中断服务标志(给“优先级生效”触发器清零)。

在编写服务中断程序时,有些地方需要注意:中断程序入口处的处理;在保护现场和恢复现场时可以关闭CPU中断,一面造成混乱。

实验中也出现了一些问题,在原理图的设计上,LED缺少驱动电路,同时按键开关缺少下拉电阻,导致悬空,这些都是在以后的实验中值得注意的地方,需要改进。

相关文档
最新文档