51单片机P1口输入输出实验实验报告
2单片机IO口控制实验实验报告
Main:
JB P1.7,SETLED ;按键没有按下时,跳转到SETLED
CLRLED:
CLR P1.0
CLR P1.1
CLR P1.2 ;P1.0~P1.2清零
SJMP Main
SETLED:
SETB P1.0
SETB P1.1
SETB P1.2 ;P1.0~P1.2置1
归纳为两条基本规则:
(1)低优先级可被高优先级中断,反之则不能。
(2)同级中断不会被它的同级中断源所中断。
若CPU正在执行高优先级的中断,则不能被任何中断源所中断。
中断优先级寄存器IP,其字节地址为B8H。
IP各个位的含义:
(1)PS——串行口中断优先级控制位
1:高优先级中断;
0:低优先级中断。
(2)PT1——定时器T1中断优先级控制位
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)。
51单片机实验-实验二P1口输入、输出实验
51单片机实验-实验二P1口输入、输出实验
实验二 P1口输入、输出实验
一、实验目的
学习Pl口的使用方法。
学习延时子程序的编写和使用。
进一步熟悉星研Star16L仿真器系统的操作,和EL-Ⅱ型通用接口板实验电路结构,学习使用PROTEUS仿真软件实现单片机的虚拟仿真。掌握虚拟仿真与实际系统仿真的有机衔接。
二、实验仪器和设备
PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。
三、实验内容
1)P1口做输出口,经过74LS04反相器接八只发光二极管,编写程序,使发光二极管循环点亮。
2)(选作)P1口既做输入又做输出,在P1.0~P1.3口接四个平推开关,通过开关的不同位置向P1.0~P1.3输入不同的状态,然后利用输入指令读取所设开关状态,为验证输入结果的正确与否,将它们输出到P1.4~P1.7,经过74LS04反相器驱动发光二极管。四、实验结果
1)循环点亮八只发光二极管。取P1.0口接出第一个二极管,以此类推,第八个接P1.7口。Proteus 仿真图
①循环左移,即从第一个二极管开始点亮到第八个二极管
实验程序:
ORG 0000H
START:MOV R2,#8
MOV A,#01H ;先让第一个发光二极管点亮
LOOP: MOV P1,A ;从P1口输出到发光二极管
LCALL DELAY
RL A ;循环左移(从第一个发光二极管开始一直往下一个二极管)DJNZ R2,LOOP ;判断移动是否超过8位,未超过则继续循环LJMP START ;循环发光
单片机实验报告
单片机实验报告
实验一:存储器块清零或赋值
一、实验目的
1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容
指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:
1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容
3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR
4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器
微机、VW,WA VE6000编程环境软件,(单片机实验箱)
Lab6000/Lab6000通用微控制器MCS51实验
四、实验步骤
1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)
2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):
单步执行程序,观察SFR中外部地址指针的变化;
全速执行程序,可以看到外部数据存储器已赋值33H:
五、实验结果
可以看到外部数据存储器已赋值33H:
六、问题讨论
本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。同时,学习掌握汇编程序的编写和调试过程。
单片机实验报告
单片机实验报告
学院:姓名:学号:指导老师:
目录
第一章实验内容、目的及要求 (2)
一、内容 (2)
二、目的及要求 (3)
第二章实验 (3)
实验一数字量输入输出实验 (3)
实验二定时器/计数器实验 (4)
实验三A/D、D/A转换实验 (11)
实验四串行通信设计 (20)
第三章实验体会 (28)
第一章实验内容、目的及要求
一、内容
实验一数字量输入输出实验
阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。
实验二定时器/计数器实验
阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。
提高部分:定时器控制LED灯
由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。编写程序模拟时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。
实验三A/D、D/A转换实验
阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。
提高部分:(要求:Proteus环境下完成)
小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。
实验4 P1、P3口输入输出
实验四P1、P3口输入输出实验
一、实验目的
了解单片机准双向口的特性,掌握准双向口的使用方法。
二、实验内容
单片机P1口作为输入口,P1口的P1.0~P1.7分别用连线对应接到实验箱(左下角)的拨动开关K0~K7,P3口作为输出口分别对应接到LED发光二极管L0~L7。编制一段程序,从P1口读入开关状态,当开关为“1”(高电平)时,从P3口输出,使之对应的LED 发光二极管亮,反之则不亮。
三、实验原理
单片机除P0口为三态双向口外其余的的P1、P2、P3均为准双向口(作为输入时必须先使口锁存器置“1”)。编程时,当P1、P2、P3口作为输入口用时,因为电路设计的原因在读入数据前需要先做一次写操作,使得口的每位引脚上的输出驱动器的场效应管处于截止状态,这样才能保证读入的数据的正确性。程序从P1口读入连接到P1口的K0~K7的开关状态(开关电路如P110图1所示,开关K0~K7为单刀双掷开关,每个开关有2个状态“0”或“1”),由于实验箱上的LED发光二极管的L0~L7接正电源亮(电路如P111图2所示)因此读入后的开关状态可以直接送P3口,控制连接在P3口上的LED发光二极管的亮与灭。
四、实验步骤与要求
a、根据实验内容要求连接好P1.0~P1.7与K0~K7、P3.0~P3.7与LED的连接线;
b、将多余的线头放到实验箱的附件盒里,确认没有多余东西后再开电源;
c、按照实验要求画出程序流程图并根据流程图编制出相应的循环程序,在全速运行的
情况下能够从P1口读入K0~K7的状态,并可根据读入状态的情况从P3口输出控
51单片机智能机器人实验报告
51单片机智能机器人实验报告
智能机器人实验报告电子稿
实验一教你的机器人“走路”
一、要求与目的
熟悉机器人用于走路的“脚”,要教你的机器人学会走路,同时你要掌握控制机器人走路的基本方法。
二、内容
1、机器人为什么会“走”
要想让机器人移动,就要控制电机的转动。控制机器人“行走”的基本指令是motor(x,y)函数和drive(x,y)函数。
2、驱动电机的函数
通过JC程序控制电机转动,使机器人行走的指令有两个,它们是motor(x,y)函数和drive(x,y)函数,介绍:
一、motor(x,y)函数
此函数是“启动”电机,x取值1、2,分别表示左右两个电机;y表示电机转速两个电机同时以相同速度启动,意味着什么?机器人将怎样运动?
答:机器人将直走。
进一步讨论:如果将一侧电机速度改为0,机器人将会怎样运动?(顺时针、逆时针旋转)
答:左侧电机速度为零,则逆时针旋转;反之,则顺时针旋转。实验题一:让机器人顺时针、逆时针旋转
(1)用vjc语言或者流程图让能力风暴顺时针走直径约1米的圆形路径;
程序:
void main()
{
while(1)
{
motor( 1 , 80 );
motor( 2 , 20 );
}
stop();
}
(2)用vjc语言或者流程图让能力风暴逆时针走约1米立方的正方形路径;
程序:
void main()
{
while(1)
{
drive( 100 ,0);
wait( 1.000000 );
stop();
motor( 1 , -20 );
motor( 2 , 20 );
wait( 0.500000 );
单片机流水灯实验报告
单片机流水灯实验报告
电子信息工程学系实验报告
课程名称:单片机原理及接口
实验项目名称:实验2 流水灯实验时间: xx-10-21 班级:电信092 姓名:蔡松亮学号: 910706247
一、实验目的:
进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
二、实验原理:
MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输
出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。
以P1口为例,内部结构如下图所示:
图 P1口的位结构
作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。
I/O口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使
GPIO的使用实验报告
实验二通用GPIO的使用(4学时)
一、实验目的
1、掌握C51芯片I/O接口的性能特点。
2、掌握STM32芯片I/O接口的性能特点。
3、对于C51芯片,使用P0、P1口做I/O接口,实现输入和
输出控制。
4、对于STM32芯片掌握GPIO的功能设定方法,使用
GPIO完成输入与输出的电路驱动
二、实验内容
1. P1口做为输出口控制“单只数码管循环显示0~9”。
2. 编写一段程序,并修改硬件电路,用P1.0-P1.6口控制
LED,P1.7控制LED的亮与灭(P1.7接按键,按下时LED 亮,不按时LED灭)。
3、用STM32芯片I/O接口实现流水灯的控制。
三、思考题
1、为什么P0作为I/O接口时,要接上拉电阻?
答:因为P0口作为I/O接口时内部是漏极开路型。
2、在实验内容2中,如果P0某个管脚接按键,该如何修改硬件和软件?
3、设计一单片机控制电路,用八只开关分别控制八只LED 的亮灭。
四、实验结果分析
对于问题2
四、结论
这次对单片机GPIO口的实验,我们分别做了51单片机和STM32f103r6对GPIO端口的应用,再通过protues的仿真验证,证明我们的思路是正确的。由于在这次实验中没有吧protues8.6版本安装好,导致实验过程中出现了了一些延误,没能按照老师课堂的进度,但在实验课过后过后,及时复习和查资料,解决了这个问题。实验过程中不足的有,对于实验仍处于生搬硬套的阶段,无法将老师理论课所讲与实验结合在一起,对于写代码的能力有待提高。
单片机实验报告
单
片
机
实
验
报
告
班级:09050541
学号:0905054116
姓名:王昆鹏
实验1 P1口实验
一、实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:
CPU挂箱、8051CPU模块
三、实验内容:
1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、实验原理:
P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
软件延时,如果用c编程时,通过使用keil的软件模拟,调试观察子函数(delay)延时时间。(具体延时可以自行设定)
使用汇编语言的软件延时,可以计算其指令的周期数,大概估算其软件延时。五、实验原理图:
P1口输出、输入实验
六、实验步骤:
执行程序:P1.0~P1.7接发光二极管L1~L8。
七、程序框图:
循环点亮发光二极管(具体延时可以自行设定)
八、程序代码
NAME T1_1
ORG 0000H
LJMP START
ORG 0030H
START: MOV A,#0FEH //将1111 1110赋给A LOOP: RL A //A循环左移
MOV P1,A //把A赋给端口P1
LCALL DELAY //延时0.16s
JMP LOOP //循环
;延时函数
DELAY: MOV R1,#200
DEL1: MOV R2,#200
DEL2: DJNZ R2,DEL2
DJNZ R1,DEL1
RET
END
实验2 中断口实验
一、实验目的:
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
实验一 开关量输入输出实验
实验一开关量输入输出实验
一、实验要求
1.利用ATC89C51单片机的P1口作开关量输出口,连接8个LED发光二极管;
2.在单步模式(debug菜单下的step over,F10)下,循环点亮这8个LED管(流水灯);
3.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路。
4.完成全部程序和电路调试工作。
5. 先在proteus下运行程序,有时间再尝试用keil 与proteus联调。
二、实验目的
1.掌握AT89C51单片机的最基本电路的设计;
2.了解单片机I/O端口的使用方法;
三、设计提示
1. 硬件电路图
可参考switch controll.DSN,请删除无关电路。
2. 程序框架
start:
mov r0,0
again:
….. ;从tab表中获取相应数值(请补充相应指令)
mov p1,a
inc r0 ;r0+=1
jmp again
tab: db 01h,02h,04h,08h,10h,20h,40h,80h; 数值表(具体数值可自行修改)
feh,fdh,fbh,f7h,efh,dfh,bfh,7fh
(db是伪指令,定义一个byte的内容单元,上述的语句是定义了包含8个元素的数组,每个元素占据1个byte)。
end
四、主要元件
单片机51矩阵式键盘p1口
;P1.7 0 1 2 3
;P1.6 4 5 6 7
;P1.5 8 9 A B
;P1.4 C D E F
;P1.3 P1.2 P1.1 P1.0
;-------------------------------------------------------------------
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV DPTR,#TAB
LCALL KEY
MOVC A,@A+DPTR
MOV P0,A
MOV P2,#00000000B
LJMP MAIN
KEY:
LCALL KS
JNZ K1
LCALL DELAY2
AJMP KEY
K1:
LCALL DELAY2
LCALL DELAY2
LCALL KS
JNZ K2
AJMP KEY
K2:
MOV R2,#0EFH
MOV R4,#00H
K3:
MOV P1,R2
L6:
JB P1.3,L1
MOV A,#00H
AJMP LK
L1:
JB P1.2,L2
MOV A,#04H
AJMP LK
L2:
JB P1.1,L3
MOV A,#08H
AJMP LK
L3:
JB P1.0,NEXT
MOV A,#0CH
AJMP LK
LK:
ADD A,R4
MOV 0E0H,A
PUSH 0E0H
K4:
LCALL DELAY2
LCALL KS
JNZ K4
POP 0E0H
MOV A,0E0H
RET
NEXT:
INC R4
MOV A,R2
JNB ACC.7,KEY
RL A
MOV R2,A
AJMP K3
KS:
MOV P1,#0FH
MOV A,P1
XRL A,#0FH
单片机原理与应用(8051单片机P1口应用实验)
低4位为T0的控制字,高4位为T1的控制字
GATE为门控位 它对定时/计数器的启动起辅助控制作 用。 C/T为方式选择位 C/T = 0为定时器方式 C/T =1为计数器方式 M1、M0二位的状态确定定时/计数器的 工作方式
定时/计数器控制寄存器TCON的地址为 88H,格式如下:
D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 IE1 D2 IT1 D1 IE0 D0 IT0
实验目的与要求
学习8051单片机P1口作为双向I/O口的使用方法, 采用循环指令编写延时子程序。了解用弱电控制强电的 基本原理,采用单片机P1口实现继电器开关控制。 ① 采用8051单片机的P1口做输出口,接4只发光 二极管,编写程序,使发光二极管循环点亮。 ② 采用P1.0,P1.1作输入口接两个拨动开关, P1.2,P1.3作输出口,接两个发光二极管,编写程序 读取开关状态,并将此状态在发光二极管上显示出来。 ③ 采用P1口输出电平控制继电器的吸合和断开,从 而实现对外部装置的开关量控制。 ④ 采用P1口控制音频电路发声。
gatm1m0gatem1m0d7d6d5d4d3d2d1d0低4位为t0的控制字高4位为t1的控制字gate为门控位它对定时计数器的启动起辅助控制作1为计数器方式m1m0二位的状态确定定时计数器的工作方式定时计数器控制寄存器tcon的地址为88h格式如下
《单片微机原理与应用》实验课件一
单片机P1口输入输出实验研究报告
单片机P1口输入输出实 验
单片机P1口输入输出实验
5、程序设计
1)工作原理 P1口定义为带有上拉电阻8位准双向I/O口,功能单一,每 一位可独立定义为输入输出,CPU对P1口操作可以是字节操 作,也可以是位操作。P1作为输出口使用时,它的内部电路 已经提供了一个推拉电流负载,外接了一个上拉电阻,外电 路无需再接上拉电阻,与一般的双向口使用方法相同;作为 输入口使用时,应先向其锁存器写入“1”,使输出驱动电路 的FET截止。若不先对它置“1”,读入的数据是不准确的。
图6
源程序编写编译调试
单片机P1口输入输出实 验 7、实验报告要求
1)实验报告要求有实验目的、要求、设备或仪器、硬件软件设计、步骤、 现象分析、应用分析。现象分析、应用分析填在报告本的原始数据栏。 2)画出实验要求2)硬件设计电路图、程序设计流程图、程序设计清单。 3)写出实验要求3)的程序设计清单? 4)写出实验过程中所遇到的问题与解决的办法。
单片机P1口输入输出实 验 2、实验要求(1)、2)为必做,3)为选做)
3) P1口作输出口,接8只发光二极管LED1-LED8(其输 出端为低电平时发光二极管点亮),编写程序。 状 态1:控制系统通电或复位后,8个LED发光二极管依次从 左到右开始逐个点亮; 状态2:8个 LED发光二极管全亮后,从右向左LED发光二极管再逐个熄 灭; 状态3:8个LED发光二极管 全灭后,从左右两边开始同时点亮LED发光二极管,全亮 后,8个LED发光二极管再明暗一起闪烁2次 ?
实验三P3.3口输入、P1口输出实验
实验三 4.1 P3.3口输入、P1口输出实验
系别专业:电子系12级电信2班学号:3121003210
姓名:李书杰指导老师:刘志群老师
4.1.1 实验要求
1. 复习Keil C51调试硬件的操作方法。
2. 复习单片机作为通用I/O口的注意事项。
3. 复习单片机操作I/O口的程序设计方法。
4.1.2 实验设备
PC 机一台,TD-NMC+教学实验系统
4.1.3 实验目的
1. 熟悉单片机仿真实验软件Keil C51调试硬件的方法。
2. 了解P3、P1口作通用I/O口的使用方法。
3. 掌握延时子程序的编写和使用方法。
4. 了解单片机对简单I/O的扩展方法。
4.1.4 实验内容
实验1
根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:将P1口的低4位定义为输出,高4位定义为输入,数字量从P1口的高4位输入,从P1口的低4位输出控制发光二极管的亮灭。
程序如下:
KEY:MOV P1,#0F0H ;令所有行为低电平
KEY1:MOV R7,#0FFH ;设置计数常数
DJNZ R7,KEY1 ;延时
MOV A, P1 ;读取P1口的列值
ANL A,#0F0H ;判别有键值按下吗?
CPL A ;求反后,有高电平就有键按下
JZ EKEY ;无键按下时退出
LCALL DEL20 ms ;延时20 ms去抖动
SKEY:MOV A,#00 ;下面进行行扫描,1行1行扫
MOV R0,A ;R0作为行计数器,开始为0
MOV R1,A ;R1作为列计数器,开始为0
MOV R3 #0FEH ;R3暂存行扫描字,低4位为行扫描字
单片机原理实验报告
实验一:系统认识实验
一、设计目的:
1. 学习 Keil C51 集成开发环境的操作;
2. 熟悉 TD-51 系统板的结构及使用。
二、设计内容:
编写程序,将 00H~0FH 共 16 个数写入单片机内部 RAM 的 30H~3FH 空间。
三、设计步骤:
1. 创建 Keil C51 应用程序
(1)运行 Keil C51 软件,进入 Keil C51 集成开发环境。
(2)选择工具栏的 Project 选项,弹出下拉菜单,选择 NewProject 命令,建立一个新的μVision2 工程。这时会弹出文件保存对话框,选择工程目录并输入文件名 Asm1 后,单击保存。
(3)工程建立完毕后,μVision2 会马上弹出器件选择窗口。器件选择的目的是告诉μVision2 使用的 80C51 芯片的型号是哪一个公司的哪一个型号,不同型号的 51 芯片内部资源是不同的。此时选择 SST 公司的 SST89E554RC。
(4)到此建立好一个空白工程,现在需要人工为工程添加程序文件,如果还没有程序文件则必须建立它。选择工具栏的 File 选项,在弹出的下拉菜单中选择 New 目录。
(5)输入程序,完毕后点击“保存”命令保存源程序,将 Text1 保存成Asm1.asm。Keil C51 支持汇编和 C 语言,μVision2 会根据文件后缀判断文件的类型,进行自动处理,因此保存时需要输入文件名及扩展名.ASM 或.C。保存后,文件中字体的颜色会发生一定变化,关键字会变为蓝色。
(6)程序文件建立后,并没有与 Asm1.Uv2 工程建立任何关系。此时,需要将 Asm1.asm 源程序添加到 Asm1.Uv2 工程中,构成一个完整的工程项目。在Project Window 窗口内,选中Source Group1 点击鼠标右键,选择 Add Files to Group‘Source Group1’命令,此时弹出添加源程序文件对话框,选择文件Asm1.asm,点击 Add 命令按钮即可将源程序文件添加到工程中。
单片机自动测试设计实验 课程实验报告
西安电子科技大学
单片机自动测试设计实验课程实验报告
实验名称输出口实验
机电工程学院学院班Array姓名学号
同作者
实验日期 2020 年月日
输出口实验
一、实验目的:
(1)学习Keil软件的使用
(2)学习P1口的使用方法。
(3)学习软件延时函数的编写。
二、实验原理
1、Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。
2、本实验中延时函数采用指令循环来实现,机器周期(系统晶振12MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
三、实验仪器
1.计算机
2.单片机系统和仿真机
3.Keil uVision2调试软件
四、实验步骤
1)设置:关闭实验仪电源,MON51K卡上跳线帽分别短接至MON、片内、FOSC;
系统设置(JF)→总线(598),JK→系统,KB6→59(单“51”无此项);
2)接线:
☞ P1.0~P1.7→L1~L8。
☞实验箱主板CZ1/USB口→电脑串口/USB口。
3)运行:开启实验仪电源,双击“Keil uVision2”图标启动keil软件,选择通信端口、硬件仿真,编程、编译下载、开始调试,全速运行程序后,观察L1…L8流水灯循环。
五、实验内容:
1.P1输出口接八只发光二极管,编写程序,使发光二极管循环点亮。
2.实现状态指示灯的驱动
3.按照实验要求编写控制程序,进行在线调试,并进一步修改完善,最终完成可按一
定0.1S的时间顺序依次点亮发光二极管的控制程序。(要求写出程序)
六、实验结果
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一P1口输入输出实验
一实验目的
1 掌握P1口作为I/O口时的使用方法。
2 理解读引脚和读锁存器的区别。
二实验原理
由 AT89C51 组成的单片机系统,通常情况下 P0 口分时复用作为地址、数据总线, P2 口提供 A15-A8 即高 8 位地址, P3 口用作第二功能,只有 P1 口用作 I/O 口。 P1 口是 8 位准双向口,它的每一位都可独立地定义为输入或输出。既可作为 8 位的并行 I/O 口,也可作为 8 个不同的输入输出端。 P1 口的结构如图 2.1 所示,当其工作在输入方式时,对应锁存器必须先写 1 ,才能正确地读到引脚上的信号,否则,若对应锁存器的值为 0 ,执行读引脚指令时,读到的结果永远为 0 。每个 I/O 端口都有两种读入,即读锁存器和读引脚,读引脚指令一般都是以 I/O 端口为源操作数的指令,如 MOV C , P1.3 ,而读锁存器指令一般为“读 - 修改 - 写”指令,如 ANL P1.3 , C 指令,请同学们在实验中体会。图 2 中, P1.2 作为输出口, P1.3 作为输入口。
三实验内容与要求
1.编写程序实现当P1.3为低电平时(SW1闭合),发光管亮;P1.3为高电平时发光管灭。
修改程序在执行读P1.3之前,先执行CLR P1.3,观察结果是否正确,分析在第二种情况下程序为什么不能正确执行,理解读引脚和读锁存器区别。
四实验内容
实验程序:
ORG 0000H
MAIN: MOV SP,#60H ; 设置堆栈指针SP为60H
MOV P1,#0FFH ;当P1口用作输入时,所有位对应的锁存器必须先置1 LOOP: ;CLR P1.3
MOV C,P1.3 ;读P1.3
JC LIGHT
CLR P1.2 ;LED灭
SJMP LOOP
LIGHT: SETB P1.2 ;LED 亮
SJMP LOOP
RET
END
若在执行读P1.3之前,先执行CLR P1.3,观察结果将会不正确。
五实验结论
1、当P1口用作输入时,所有位对应的锁存器必须先置1
2、在执行读P1.3之前,先执行CLR P1.3,观察结果不正确,程序不能正确执行,因为系统读取的是锁存器的状态。
3、读引脚和读锁存器区别:第一种方式是将引脚作为输入,那是真正地从外部引脚读进输入的值,第二种方式是该引脚处于输出状态时,有时需要改变这一位的状态,则并不需要真正地读引脚状态,而只是读入锁存器的状态,然后作某种变换后再输出。