单片机P1口亮灯实验

单片机P1口亮灯实验
单片机P1口亮灯实验

实验一 P1口亮灯实验

一、实验目的

(1)学习P1口的使用方法;

(2)学习延时子程序的编写。

二、实验预备知识

(1)P1口对准双向口,每一位都可独立地定义为输出线或输入线。

(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。

三、实验内容

P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

四、程序框图

五、实验电路

六、实验步骤

P1.O-P1.7用插针连至L1-L8,运行程序后,观察发光二极管闪亮移位情况。

程序代码如下:

ORG 0000H

MOV P1,#0FFH ;送P1口

MOV A,#0FEH ;L1(L0?)发光二极管点亮

LOOP: MOV P1,A

LCALL DELAY ;调用延时子程序

RL A ;左移位

SJMP LOOP ;循环

DELAY: MOV R7,#0FFH ;延时子程序LOOP1: MOV R6,#0FFH

LOOP2: NOP

NOP

DJNZ R7,LOOP2

DJNZ R6,LOOP1

RET ;返回

END

七、思考

1、改变延时常数,使发光二极管闪亮时间改变。改变R7、R6的值

2、修改程序,使发光二极管闪亮移位方向改变。

将RL A 改为RR A

51单片机P1口输入输出实验实验报告

实验一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、读引脚和读锁存器区别:第一种方式是将引脚作为输入,那是真正地从外部引脚读进输入的值,第二种方式是该引脚处于输出状态时,有时需要改变这一位的状态,则并不需要真正地读引脚状态,而只是读入锁存器的状态,然后作某种变换后再输出。

-单片机报告第一个实验p1口输入输出实验

电工电子实验报告 课程名称:单片机原理及接口技术 实验项目名称:P1口输入、输出实验 实验学生班级:D自集成111 实验学生姓名:吴弟 实验学生学号:233110138 同组学生姓名: 实验指导老师:曾宪阳屈波 孙来业陆红伟 实验时间:2013.4.1 实验地点:B302 工业中心

预习报告 实验目的: 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。 3、理解读引脚和读锁存器的区别。 主要实验仪器: 1、计算机一台 2、实验箱一台 实验原理及主要工作: 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS 管导通,读入的数据是不正确的。 2.8051延时子程序的延时计算问题,对应程序 DELAY: MOV R6,#0H MOV R7, #0H DELAYLP:

DJNZ R6,DELA YLP DJNZ R7,DELA YLP RET 查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为: (256×255+2)×2×12÷6 ≈261ms 实验电路与连线: 实验2 P1口输入输出 P1.0 ●———●LED0 K0 ●———●P1.0 P1.1 ●———●LED1 K1 ●———●P1.1 P1.2 ●———●LED2 K1 ●———●P1.1 P1.3 ●———●LED3 P1.3 ●———●L5

P1口输入输出实验

实验一P1 口输入输出 一.实验目的 (1)进一步熟悉51单片机外部引脚线路连接; (2)验证常用的51指令; (3)学习简单的编程方法; (4)掌握单片机全系统调试的过程及方法; (5)学习P1 口的有关功能作用以及使用方法。 二?实验说明 P1 口由于有内部上拉电阻,没有高阻抗输入状态,称为准双向口。作为输出口时,不需要在片外接上拉电阻,P1 口“读引脚”输入时,必须先向锁存器写1; 三?实验内容 P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,编写程序 读取开关状态,将此状态,在发光二极管上显示出来 四?实验原理 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。循环时间由定时器控制。 五?实验流程 ORG 0000H ;程序入口 AJMP RIGHT ;跳向标号RIGHT处 ORG 0030H ;程序

RIGHT: MOV R0,#08H ;置移位次数

MOV A,#0FFH ;置全 1 CLR C ;将Cy 清零 RIGHT1: RRC A ;由于进位Cy=0 ,所以带进位的循环右移会出现灯的亮灭 MOV P1,A ;输出至P1 口,控制LED CALL DELAY ;调用延时子程序 DJNZ R0,RIGHT1 ;R0-1,不为0则转移到标号 RIGHT1处 AJMP RIGHT ;绝对转移至RIGHT 处 ?***************************************************************************** 5 ; /*延时子程序*/ ?***************************************************************************** DJNZ R5,DELAY1 ;R5-1,不为 0 则转移至 DELAY1,执行 2*10us RET ;退出子程序执行 END 七?硬件设计 (1) P1 口某一 I/O 口线反转输出电路 (2) P1 口输出电路 DELAY: MOV R5,#10 DELAY1: MOV R6,#50 DELAY2: MOV R7,#250 DJNZ R7,$ DJNZ R6,DELAY2 ;R6-1,不为0则转移至 DELAY2,执行2*200*10us H-5V +5V Vcc P1.0 Pl 1 EA XI PL 2 Pl .3 Pl XS Pl.5 Pl.6 Pl .7 R.ST Vss ;使用不停的跳转来实现延时, 30 P 80CS1 LED 360fi + 5V

实验三 P1口亮灯实验

实验三、P1口亮灯实验 一、实验目的: a)掌握keil及proteus的联合仿真方法 b)掌握并口的操作方法 c)掌握延时程序的编写 二、实验内容: P1口做输出口,接八只发光二极管(低电平时发光),P0口接七段数码管,编 写程序,使发光二极管循环点亮。请根据系统电路图,编写相应的程序并给予适 当的注释。 (一)实验要求: z基本要求: a)每个二极管每次点亮持续的时间约为一秒钟,假设使用的系统时钟频率为 12MHZ; b)其中时间控制可以利用延时程序实现,也可以利用定时器实现; c)正确连接电路,编写程序,调试运行,使发光二极管能够循环点亮; d)通过Proteus7软件观察实验结果。 z提高要求:能够通过按键控制彩灯循环的模式。 (二)实验基本步骤: 1.打开Keil,新建工程:Project/New Project,输入工程名,并保存 2.选项选择器件:Atmel 的89C51 3.新建程序文本,并另存为该文件为汇编文件格式: (1)“File/New”,(2) File/Save As/键入欲使用的文件名及后缀名,即“文件名.asm”。再单击“保存” 4.添加该文件该工程:回到编辑界面后,单击“Target 1”前面的“+”号,然后 在“Source Group 1”上单击右键,单击“Add File to Group ‘Source Group 1’” 选择刚才新建的汇编文件。 5.设置工程该的options选项:projec / options for project,(1)output 选项卡中Create HEX File 前打勾;(2)Debug 选项卡选择use“Proteus VSM simulator”。 6.用proteus的ISIS打开电路图P1.DSN 7.将proteus 里DEBUG /use remote debug monitor打勾 8.在keil的汇编文件中输入程序代码,并编译,调试。(1)写完代码后单击“Project” 菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成 功后(0个errors),(每次修改程序后都要重新编译下,才能生效)。(2)再单击 “Debug”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷 键Ctrl+F5),点击RUN进行运行。 9.观察运行结果:在proteus中点击运行按键,观测二极管是否循环点亮。 基本要求的参考代码 ORG 0000H MAIN LJMP

实验一 P1口亮灯实验

实验一P1口亮灯实验 一、实验目的 (1)熟悉编程和程序调试 (2)学习P1口的使用方法; (3)学习延时子程序的编写。 二、实验内容 P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 三、实验预备知识 (1)P1口为准双向口,可定义为输入,也可定义为输出。 (2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHZ)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 四、程序框图 五、实验步骤 实验步骤说明: 本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。 用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。 1.使用单片机实验箱,用扁平数据线将单片机P1口与LED灯相连。P1.0~P1.7用插针连至L1~L8。 2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。 3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,输入源程序(实验(一)),进行编译,直到编译无误。生成hex文件。 5.打开实验板总电源,将hex文件下载到实验板内,观察发光二极管显示情况。 参考例子: (1)点亮板子上的第一个灯LED1 (2)点亮板子上的LED1、LED3、LED5、LED7灯,与LED2、LED4、LED6、LED8灯交替

闪烁

(3)流水灯:从LED1---LED8依次点亮参考程序: 1) #include void main() { P1=0xfe; } 2) #include #define uint unsigned int #define uchar unsigned char void delay(); void main() { while(1) { P1=0xaa; delay(); P1=0x55; delay(); } } void delay() { uint x,y; for(x=100;x>0;x--) for(y=600;y>0;y--) ; } 3) #include #include #define uint unsigned int #define uchar unsigned char uchar temp,num;

实验五(硬件实验二) 定时器控制P1口亮灯实验 (1)

实验五 定时器控制P1口亮灯实验 一、实验目的 1.熟悉MCS -51定时/计数器的初始化编程方法,掌握根据延时要求计算定时器初值的方法。 2.理解定时器溢出中断的概念,掌握中断服务程序的编程方法。 3. 学习并行口的使用方法。 二、实验项目 1. 根据要求在单片机实验箱上接线。 2. 使用上位机(PC )按要求编制实验程序。 3. 调试实验程序,观察输出结果。 三、实验设备与仪器 1.DVCC 或 Dais 实验箱 1台 2.PC 机 1台 四、实验原理 实验电路原理图如图4-1所示,通过编程使用8051内部的定时器T0计时,当时间到(定时/计数器溢出)时,往并行口P1送数据,点亮外部扩展的LED 小灯。程序流程图如图4-2所示。 图4-1 电路原理图 (a ) 共阳极接法 (b )共阴极接法

图 4-2 实验程序框图 五、注意事项 1.接线时必须关闭实验箱电源。 2.不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 3. Dais 实验箱(大箱)上的LED小灯是共阳极接法,当输出为低电平(逻辑0)时灯 被点亮;而DVCC实验箱(小箱)上的为共阴极接法,当输出为高电平(逻辑1)时点亮。 4. 如使用Dais实验箱,请先检查CPU选择开关是否在51档,与PC通讯速率开关设置 为多少。 5. 如使用DVCC实验箱,按“复位键”后再按下“PCDBG”方可实现与系统的连接。 6.实验箱上,只需把连线从P1口端接到LED小灯模块的接线口即可, 74LS244、电阻 等元件的接线已布在实验箱底板上。 六、实验说明及操作步骤

实验二 P1口输入、输出实验

在开始实验二之前,先在实验一(认真分析实验一的代码)的基础上实现如下花型(0表示灯亮,1表示灯灭): 花型之二:即每次亮灯两个进行移动 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 花型之三(跑马灯):1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

实验二P1口输入、输出实验 一.实验要求 1、P1口做输出口,接共阳七段显示器,编写程序,显示0到9中的任意一个数字。 2、P1口做输出口,接共阳七段显示器,编写程序,循环显示0到9(延时程序段可以使用实验一种的程序段)。 3、P1口做输入口,接四个开关,编写程序读取开关状态,将此状态在四个发光二极管上显示出来。 二.实验目的 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。 三.实验电路及连线(见附件) 四.实验说明 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS 管导通,读入的数据是不正确的。 2、延时子程序的延时计算问题(晶振频率为12MHz,请在实验报告中分析如何延时200ms 的)对于程序 DELAY: MOV R5,#20 ; 延时200ms D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET 五.实验程序(见附件)

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 ;循环发光 DELAY:MOV R5,#5 ;延时0.5秒子程序 DEL1: MOV R6,#200 DEL2: MOV R7,#126 DEL3: DJNZ R7,DEL3 DJNZ R6,DEL2 DJNZ R5,DEL1 RET END 仿真结果:发光二极管从D1开始发光,依次往下到D8,然后循环这一过程。 实验结果:发光二极管从第一个开始发光,依次往左到第八个,然后循环这一过程。 ②循环右移,即从第八个二极管开始放光,依次到第一个。 实验程序: ORG 0000H START:MOV R2,#8 MOV A,#80H ;先让第八个发光二极管点亮 LOOP: MOV P1,A ;从P1口输出到发光二极管 LCALL DELAY RR A ;循环右移(从第八个发光二极管开始一直往前一个二极管) DJNZ R2,LOOP ;判断移动是否超过8位,未超过则继续循环 LJMP START ;循环发光 DELAY:MOV R5,#5 ;延时0.5秒子程序 DEL1: MOV R6,#200 DEL2: MOV R7,#126 DEL3: DJNZ R7,DEL3 DJNZ R6,DEL2 DJNZ R5,DEL1 RET END 仿真结果:发光二极管从D8开始发光,依次往上到D1,然后循环这一过程。 实验结果:发光二极管从第八个开始发光,依次往右到第一个,然后循环这一过程。

p1口输入、输出实验

南昌大学实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: p1口输入、输出实验 一、实验要求 1、P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2、P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0,P1.1作为输入口时应先置1,才能正确读入值。 二、实验目的 1、学习P1 口的使用方法。 2、学习延时子程序的编写和使用。 3、学习用‘与’‘或’运算对MCS51系列CPU 的变量进行位操作。 三、实验电路及连线 实验1: P1口循环点灯实验2: P1口输入输出 四、实验说明

1、P1 口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。 2、延时子程序的延时计算问题,对于程序 DELAY: MOV R0,#00H DELAY1: MOV R1, #0B3H DJNZ R1,$ DJNZ R0,DELAY1 RET 查指令表可知MOV,DJNZ指令均需用两个机器周期,一个机器周期时间长度为12/11.0592MHZ,所以该段程序执行时间为: ((0B3+1)×256+1)×2×12÷ =100.002ms 五、程序框图 主程序框图(1):程序框图(2): 六、实验程序 1、主程序 ORG 0000H LJMP START ORG 0040H START: MOV SP,#60H MOV A,#0FEH ROTATE: MOV P1,A ;写P1口 RL A ;循环左移

(整理)实验二P1口控制LED发光二极管.

实验二 P1口控制LED发光二极管一、实验目的 1、进一步熟练Proteus及Keil软件的基本操作 2、掌握8051单片机P1口的使用方法 3、掌握LED发光二极管的原理及使用方法 4、学习汇编程序的调试及仿真方法 二、实验电路 三、实验内容及步骤: 要求:8个LED发光二极管循环左移显示(发光的移位),间隔时间为一秒。 1、使用Proteus画出电路原理图 2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件 3、进行Protues与Keil uVision联动的相关设置: 4、在Proteus中仿真运行。 四、思考 1、将本实验的实验现象改为“不发光二极管循环移位”。 2、将本实验的实验现象改为“每隔0.5秒发光二极管循环移位”。

参考程序: ORG 0 LJMP MAIN ORG 30H MAIN: MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A SJMP LOOP DELAY: MOV R7,#20H DELAY1:MOV R6,#200 DELAY2:MOV R5,#123 DJNZ R5,$ DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END

实验三数码管静态显示实验 一、实验目的 1、进一步熟悉51系列单片机 2、了解8051单片机P0口的使用方法 3、掌握共阴极数码管的原理及使用方法 4、学习8051的编程、调试、编译、仿真。 二、实验电路 图3 数码管静态显示电路原理图 注:数码管要从元件库选择Optoelectronics类中的7SEG-COM-CAT-GRN。 三、要求及步骤: 要求:在七段数码管上以递增方式循环显示数字0—9,间隔时间为一秒。 1、使用Proteus画出电路原理图 2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件 3、进行Protues与Keil uVision联动的相关设置: 4、在Proteus中仿真运行。 四、思考 1、为什么要将P0口各引脚通过电阻R3-R9接到电源? 2、如何在共阴数码管上循环显示十六进制数字0—F(不区分字母的大小写)? 3、怎样修改程序使数字以递减方式循环显示? 4、若用共阳极数码管应如何修改电路和程序,才能完成本实验的功能?

P1口输入输出实验

实验一 P1口输入输出 一.实验目的 (1)进一步熟悉51单片机外部引脚线路连接; (2)验证常用的51指令; (3)学习简单的编程方法; (4)掌握单片机全系统调试的过程及方法; (5)学习P1口的有关功能作用以及使用方法。 二.实验说明 P1口由于有内部上拉电阻,没有高阻抗输入状态,称为准双向口。作为输出口时,不需要在片外接上拉电阻,P1口“读引脚”输入时,必须先向锁存器写1; 三.实验内容 P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来 四.实验原理 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。循环时间由定时器控制。 五.实验流程 六.实验源程序 ORG 0000H ;程序入口 AJMP RIGHT ;跳向标号RIGHT处 ORG 0030H ;程序 RIGHT: MOV R0,#08H ;置移位次数

MOV A,#0FFH ;置全1 CLR C;将Cy清零 RIGHT1: RRC A ;由于进位Cy=0,所以带进位的循环右移会出现灯的亮灭MOV P1,A ;输出至P1口,控制LED CALL DELAY ;调用延时子程序 DJNZ R0,RIGHT1 ;R0-1,不为0则转移到标号RIGHT1处 AJMP RIGHT ;绝对转移至RIGHT处 ;***************************************************************************** ; /*延时子程序*/ ;***************************************************************************** ;使用不停的跳转来实现延时, DELAY: MOV R5,#10 DELAY1: MOV R6,#50 DELAY2: MOV R7,#250 DJNZ R7,$ DJNZ R6,DELAY2 ;R6-1,不为0则转移至DELAY2,执行2*200*10us DJNZ R5,DELAY1 ;R5-1,不为0则转移至DELAY1,执行2*10us RET ;退出子程序执行 END 七.硬件设计 (1)P1口某一I/O口线反转输出电路 (2) P1口输出电路 八.实验连接图

实验二 单片机P1口输入输出及中断实验

实验二单片机P1口输入输出及外部中断实验 一、实验目的 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。 3、熟练在汇编软件环境下编写、修改、调试、和运行硬件程序 4、熟悉汇编语言 5、学习外部中断技术的基本使用方法。 6、学习中断处理程序的编程方法。 二、实验说明 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2、P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0,P1.1作为输入口时应先置1,才能正确读入值。 3、用单次脉冲申请中断,在中断处理程序中使P1.0的输出状态发生反转,并通过发光二极管观察P1.0的电平。 三、实验仪器 计算机 伟福软件(lab2000P ) 四、实验内容 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。 2、8051延时子程序的延时计算问题,计算和估算延时子程序的时间。 3、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 4、必须在中断程序中设定是否允许中断重入,即设置EXO位。 5、本例中使用了INTO中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的中断程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。 五、思考题 1、改变延时时间,变快或者变慢,观察效果; 2、改变流水灯的运行方向; 3、改变流水灯的运行模式,双灯对跑,双灯一起跑。 4、如果LED灯为低电平点亮,如何改动。 5、把实验改为int1中断,需要改动几处,如何改动。 6、把实验改为同时int0和int1中断驱动2个灯,需要改动几处,如何改动。 六、源程序修改原理及其仿真结果 流水灯实验: 原程序: Loop: mov a, #01h mov r2, #8 Output: mov P1, a

P1口输入、输出实验

实验一 P1口输入、输出实验 一、实验要求 1. P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2. P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管, 编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。 二、实验目的 1. 学习P1口的使用方法。 2. 学习延时子程序的编写和使用。 三、实验连线 实验1: P1口循环点亮 实验2: P1口输入输出 四、实验说明 1. 8051延时子程序的计算 延时程序的实现常用两种方法,一种用定时器中断来实现,另一种是用指令循环实现。在系统时间允许的情况下可以采用后一种方法。 本实验系统晶振频率为6MHz ,执行一个机器周期时间为12/6MHZ=2μS,现在写一个延时0.1S 的程序如下: 查指令表可知MOV 需要一个机器周期,DJNZ 指令需用两个机器周期,所以执行该段程序所需时间是: [ 1 + ( 1 + 2 × 200 + 2 ) X ] × 2×10-6 = 0.1S 指令(1) (2) (3) (4) 所需时间 所需时间 所需时间 所需时间 求出X =124,将X =124代入上式可知实际延时约0.099946≈0.1S 。 2. P1口准双向口 它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用为 Delay :MOV R6,#X (1) DE1: MOV R7, #200 (2) DE2: DJNZ R7,DE2 (3) DJNZ R6,DE1 (4)

输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。 六、硬件电路 1、LED电平显示电路 图1:LED电平显示电路 2、逻辑电平开关电路 实验仪上有8只开关K0―K7,并有与之相对应的K0―K7引线孔为逻辑电平输出端。 开关向上拨相应插孔输出高电平“1”,向下拨相应插孔输出低电平“0”。 图2:逻辑电平开关电路

单片机实验二 P1口输出实验(流水灯)

实验二P1口输出实验(流水灯) 一. 实验要求 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 二. 实验设备 1、I B M — P C 系统机(或兼容机)一台; 2、系统软件:WAVE6000、仿真软件PROTEUS。 三. 实验目的 1、学习PROTEUS仿真软件的使用 2、学习P1口的使用方法。 3、学习延时子程序的编写和使用。 四.实验电路及连线 五.实验说明 1、延时子程序的延时计算问题 对于程序 Delay: MOV R6,#0H MOV R7, #0H DelayLoop: DJNZ R6,DelayLoop DJNZ R7,DelayLoop

RET 查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为: (256×255+2)×2×12÷6 ≈ 261ms 2、使用PROTEUS仿真软件 A、安装PROTEUS: 1.打开Proteus 7.12完美破解版目录,先安装Setup71.exe,提示Licence时选择"本地"并指向"crack"-->MAXIM_LICENCE.lxk 2.安装完成后将crac-->BIN中的文件复制到安装目录的..\BIN下替换原有的文件 B、打开老师提供的FlashLED仿真图,用鼠标左键双击AT89C52芯片,会弹出Edit Component 对话框,在Program File中选择已编译好的HEX文件,点OK退出。 C、点左下角三角尖,则开始仿真。 六.实验框图

七、实验程序: ORG 0000H JMP MAIN ORG 0100H MAIN: MOV A,#01111111B LOOP1: MOV P1,A CALL DELAY RR A JMP LOOP1 DELAY: MOV R2,#10 MOV R0,#200 DL3: NOP DL1: MOV R1,#250 DL2: DJNZ R1,DL2 DJNZ R0,DL1 DJNZ R2,DL3 RET 八、请计算该DELAY程序的延迟时间。(晶振为12MHz)

P1口输入输出实验

P1口输入输出实验 实验目的: (1)掌握P1口同时做输入/输出口使用方法 (2)学习数据输入、输出程序的设计方法 方法一:用CJNE A,#DATA,LP指令实现 CSEG A T 0000H LJMP START 无条件转移到START CSEG A T 4100H START:MOV P1,#0FFH 读P1口 LP:MOV A,P1 将P1送A ANL A,#00000011B 进行”与”运算,屏蔽高六位 CJNE A,#00,LP0 比较转移指令,判断A是否等于0 否则跳转到LP0 CLR P1.2 P1.2口清零 LJMP START 无条件转移到START LP0:CJNE A,#01,LP1 比较转移指令,判断A是否等于1 否则跳转到LP1 CLR P1.3 P1.3清零 LJMP START 无条件转移到START LP1:CJNE A,#02,LP2 比较转移指令,判断A是否等于2 否则跳转到LP2 CLR P1.4 P1.4清零 LJMP START 无条件转移到START LP2:CLR P1.5 P1.5清零 LJMP START 无条件转移到START END 结束标志 方法二:用MOVC A,@A+DPTR指令实现 CSEG A T 0000H LJMP START CSEG A T 4100H START:MOV P1,#0FFH 读P1口 LP:MOV A,P1 将P1送A MOV DPTR,#4200H 创建表格的起始地址 ANL A,#00000011B 进行”与”运算,屏蔽高六位 MOVC A,@A+DPTR 查表指令 MOV P1,A A送P1 LJMP LP 无条件转移到LP CSEG A T 4200H DB 0FBH,0EFH,0F7H,0DFH 建表 END 结束标志

P1口转弯灯实验报告

P1口转弯灯实验 一、实验目的 了解P1口的使用,学习汇编语言编程方法与调试技巧。 二、实验内容 P1.0开关接5V 时右转弯灯闪亮,P1.1开关接5V 时左转弯灯闪亮,P1.0、P1.1开关同时接5V 或接地时,转弯灯均不闪亮。标志位为1表示现在有灯亮。 四、实验接线图 7047 五、实验步骤 P1.0,P1.1分别接拨动开关JP40的某两位,P1.4~P1.7依次接LED 指示灯JP32的某四位,连续运行本程序;应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序(例如可把延时程序第一个字节改成返回指令22H ),

以便观察。 六、实验程序 ORG 0000H LJMP PX00 ORG 0C30H PX00: MOV P1, #0FFH ;初始化 PX03: MOVA,P1 MOV B,A ANL A,#03H CJNE A, #01H, PX01 ;满足只是P1.0为高条件吗? JB 00H, PX04 ;闪烁标志位 CLRP1.4 CLR P1.5 ;开右灯 SETB P1.6 SETB P1.7 ;关左灯 MOV R2,#20H LCALL DELY ;延时 SETB 00H ;置标志位 LJMP PX03 ;继续查状态 PX04: SETB P1.4 SETBP1.5 SETB P1.6 ;关灯 SETB P1.7 MOV R2,#20H LCALL DELY ;延时 CLR 00H ;清标志位 AJMP PX03 ;继续查状态 PX01: CJNE A,#02H,PX02 ;满足只是P1.1为高条件吗? JB 01H, PX05 ;判标志位 SETB P1.4 SETB P1.5 ;开左灯 CLR P1.6 CLR P1.7 ;关右灯 MOV R2, #20H ;延时 LCALL DELY SETB 01H ;置标志位 LJMP PX03 ;继续查状态 PX05: SETB P1.4 SETB P1.5 SETB P1.6 ;关灯 SETB P1.7 MOV R2,#20H LCALL DELY ;延时

实验七 P1口输入输出实验

实验七 P1口输入、输出实验 一、实验目的 1.学习P1口的使用方法 2.学习延时子程序的编写和使用 二、实验说明 P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。 三、实验内容及步骤 实验(一): 本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。 用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。 1.使用单片机最小应用系统。用扁平数据线连接单片机P1口JD1F与十六位逻辑电平显示模块JD2I,打开相关模块电源。 2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。 3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH7_P1A.ASM”源程序,进行编译,直到编译无误。 4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。 5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。 实验(二): 本实验需要用到单片机最小应用系统(F1区)、十六位逻辑电平显示模块(I4区)以及八位逻辑电平输出模块(B1区)。 用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。程序读取开关状态,并在发光二极管上显示出来。 1.用导线分别把单片机最小应用系统的 P1.0、P1.1连接到两个拨断开关(B1区)K0、K1,P1.2、P1.3连接到两个发光二极管(I4区)L0、L1。 2.打开“TH7_P1B.ASM”源程序,编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。向上拨为熄灭,向下拨为点亮。 3.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。(ISP烧录器的使用查看附录二) 注:在做完实验时记得养成一个好习惯:把相应单元的短路帽和电源开关还原到原来的位置!以下将不再重述。 四、流程图及源程序 1.流程图

实验一 P1口输入

实验一P1口输入、输出实验 一、实验目的 1、学习P1口的使用方法 2、学习延时子程序的编写和使用 二、实验说明 P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。 三、实验内容及步骤 实验(一): 用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。 实验(二): 用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。程序读取开关状态,并在发光二极管上显示出来。 KEYRIGHT BIT P1.1 2.源程序: (一)实验一 ORG 0000H LJMP START ORG 0030H START: MOV A, #0FEH MOV R2,#8 OUTPUT: MOV P1,A RL A ACALL DELAY DJNZ R2,OUTPUT LJMP START DELAY: MOV R6,#0 LEDLEFT BIT P1.2 LEDRIGHT BIT P1.3 ORG 0000H LJMP START ORG 0030H START: SETB KEYLEFT ;欲读先置一

SETB KEYRIGHT LOOP: MOV C,KEYLEFT MOV LEDLEFT,C MOV C,KEYRIGHT MOV LEDRIGHT,C LJMP LOOP END 五、思考题 (1)对于本实验延时子程序 Delay: MOV R6,0 MOV R7, 0 DelayLoop:DJNZ R6,DelayLoop DJNZ R7,DelayLoop RET 如使用12MHz晶振,粗略计算此程序的执行时间为多少? 六、电路图

实验7 P1口输入

4.1实验7 P1口输入/输出及外部中断 4.1.1实验目的 掌握单片机并行口开关量输入、输出的接口技术及编程方法;掌握延时子程序的编写和使用。 4.1.2实验设备 PC机一台,DP-51PROC单片机综合仿真实验仪一台或DICE-598H+增强型单片机开发实验仪一台。 4.1.3实验内容 ⑴P1口连接8个LED,轮流点亮每个LED。 硬件连线方法: z DP-51PROC:用排线连接A2区J61至D1区J52; z DICE-598H+:用导线连接A1区L1~8插孔至A4区X0、X2~X8;插孔功能详见附录1。 ⑵根据P3.2口状态,改变P1口点亮8个LED的顺序,当P3.2=0时,P1口由低到 高点亮LED,P3.2=1时,由高到低点亮LED。电路如图4-3所示。 图 4-3 P3.2与P1口输入/输出

硬件连线方法: z DP-51PROC:用排线连接A2区J61至D1区J52,A2区INT0插孔至D1区SW1插孔; z DICE-598H+:用导线连接A1区L1~8插孔至A4区X0、X2~X8,D1区K1插孔至A4区X15插孔,插孔功能详见附录1。 ⑶使用外部中断0,输入P1.0~P1.2的开关状态,然后从P1.5~P1.7LED指示灯输 出。电路如图4-4所示。 图 4-4 P1口中断方式输入/输出 硬件连线方法: z DP-51PROC:用导线连接A2区P10~P12插孔至D1区SW1~SW3插孔,A2区P14~P16插孔至D1区LED1~LED3插孔,A2区INT0插孔至D1区K1; z DICE-598H+:用导线连接A1区L1~3插孔至A4区X0、X2、X3,D1区K1~K3插孔至A4区X5、X7、X8插孔,A3区AN按钮下降沿插孔至A4区X15,插孔功 能详见附录1。 4.1.4实验参考程序 ⑴P1口依次点亮每个LED参考程序。 ;Exp7_1:P1口输出,依次点亮8个LED ORG 0000H mov P1,#0FFH ;关闭8个LED Loop: clr P1.0 lcall Delay ;调用延时子程序 clr P1.1 lcall Delay

硬件实验一 P1口输入

硬件实验一 P1口输入、输出实验 一、实验要求 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2、P1.0、P1.1 P、1.2、P1.3作输入口接两个拨动开关,P1.4、P1.5、P1.6、P1.7 作输出口,接四个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0、P1.1、P1.2、P1.3作为输入口时应先置1,才能正确读入值。 二、实验目的 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。 三、实验电路及连线 四、实验说明 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相 同。由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。 若不先对它置“1”,读入的数据是不正确的。 2、8051延时子程序的延时计算问题,对于程序(见程序框图) 查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振

时,一个机器周期时间长度为12/6MHZ ,所以该段程序执行时间为: (256× 255+2)×2×12÷6 ≈ 261ms 四、 实验框图 Loop :mov a, #01h mov r2, #8 Output:mov P1, a rl a call Delay djnz r2, Output ljmp Loop Delay :mov r6, #0 mov r7, #0 DelayLoop:djnz r6, DelayLoop djnz r7, DelayLoop ret end (A) P1口循环点灯程序框图 (B) P1口输入输出程序框图

Mov a,#0fh Mov p1,a Loop: MOV C,p1.0 MOV p1.4,C MOV C,p1.1 MOV p1.5,C MOV C,p1.2 MOV p1.6,C MOV C,p1.3 MOV p1.7,C

相关文档
最新文档