单片机并行口实验报告
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)。
实验三 可编程并行接口报告
实验三可编程并行接口
一、实验目的
掌握8255方式0的工作原理及使用方法。
二、实验内容
1.实验电路如图3-1,8255的C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2.编程从8255的C口输入数据,再从A口输出。
3.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。
L0
L1
L2
L3
L4
L5
L6
L7
K0
K1
K2
K3
K4
K5
K6
K7
图3-1
三、编程提示
1.8255控制寄存器端口地址28BH,A口的地址288H,C
口地址28AH。
四、参考流程图
如图3-2所示。
五、参考程序
源程序清单如下:ioport equ 0e400h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh io8255c equ ioport+28ah code segment
assume cs:code
start:
mov dx,io8255b
mov al,008bh
out dx,al
inout:
mov dx,io8255c
in al,dx
mov dx,io8255a
out dx,al
mov dl,0ffh
mov ah,06h
int 21h
jz inout
mov ah,4ch
int 21h
code ends
end start
实验总结:
通过本次试验,我掌握了可编程并行接口8253和微机的硬件连接方法,并加深理解了可编程并行接口8253的工作方式及编程方法。
MCS-51单片机并行口的结构与操作
华中科技大学光学与电子信息学院
单片机
( 2015 -- 2016学年度第一学期)
题目:MCS-51单片机并行端口
结构与操作
院系:光学与电子信息学院
班级:
学号:
学生姓名:
指导教师:
成绩:
日期: 2015年 9月 21日
MCS—51单片机并行口的结构与操作
一、MCS—51单片机简介
MCS—51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS—51单片机作为代表进行理论基础学习.
MCS-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能如下:8位CPU、4kbytes 程序存储器(ROM)、128bytes的数据存储器(RAM)、32条I/O口线、111条指令,大部分为单字节指令、21个专用寄存器、2个可编程定时/计数器、5个中断源,2个优先级、一个全双工串行通信口、外部数据存储器寻址空间为64kB、外部程序存储器寻址空间为64kB、逻辑操作位寻址功能、双列直插40PinDIP封装、单一+5V电源供电。
如图所示:
1。结构
(1)中央处理单元(8位)
数据处理、测试位,置位,复位位操作
(2)只读存储器(4KB或8KB)
永久性存储应用程序,掩模ROM、EPROM、EEPROM
(3)随机存取内存(128B、128B SFR)
在程序运行时存储工作变量和资料
微机原理实验---并行接口实验
微机原理实验---并行接口实验
并行接口(Parallel Port)是一种广泛使用的计算机外围设备接口。它通常用于连接打印机、扫描仪、摄像头等设备,以实现数据的传输和控制。
本实验旨在教授学生使用并行接口实现数据输入和输出的基本功能,以提高学生对计算机外围设备的理解和应用能力。具体实验步骤如下:
材料及设备:
1. 一台计算机
2. 并行数据线(Parallel Data Cable)
3. 并口测试器(Parallel Port Tester)
4. 8位开关(8-bit Switch)
5. LED 灯(LED Light)
实验步骤:
1. 将并行数据线连接至计算机的并行接口,并将另一端连接至并口测试器。
2. 使用并口测试器测试并行接口是否正常。若测试失败,可检查并行接口是否损坏或驱动程序是否正确安装。
3. 将 8 位开关连接至并口测试器的数据输出端,连接正确后,将 8 位开关的位置设置为 0。
4. 运行实验程序,将数据从计算机输出至并口测试器。
5. 将 LED 灯连接至并口测试器的数据输入端,将计算机输入的数据传输至 LED 灯并输出。
2.4 单片机并行IO口(实验2)
4
2.4 并行I/O模块
一、 A、B、E、K口
低功耗驱动寄存器(RDRIV:$000D)
按位控制输出引脚的功耗(与输入引脚无关): 0->正常功耗 1->正常功耗的1/5 5V供电时驱动能力相当于一个TTL晶体管,不能向外界提供功率,需要 靠外部供电来驱动输出设备;
7
654
321
0
RDPK 0 0 RDPE 0 0 RDPB RDPA
12
2.4 并行I/O模块
实现方法
1、硬件电路 (4) LED输出电路
College of Communication Engineering, Jilin University
13
2.4 并行I/O模块
实现方法
2、硬件连线
① DIP开关读入:DIP开关8个孔--A口8个引脚 ② A口状态送显示:A低4位--DIP的4位,A高位--红色LED灯 ③ 中断信号产生:中断信号源--IRQ(XIRQ)
上下拉使能寄存器
PERT:$0244
PERS:$024C
PERM:$0254
PERP:$025C
PERH:$0264
PERJ:$026C
按位控制输入引脚的上下拉电阻使能(与输出引脚无关):
0->上下拉禁止 1->上下拉使能
College of Communication Engineering, Jilin University
单片机及其接口技术实验报告
单片机及接口技术实验报告
实验一数据传送程序
一、实验目的
1、掌握汇编语言设计和调试方法。
2、掌握DVCC实验系统的操作步骤。
二、实验内容
1、编程实现,把7000H~70FFH单元的内容清零。
2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,
传送个数为0FFFH个。
三、DVCC实验系统操作说明
1、接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset
键。
2、运行DVCC软件。(程序DVCC598H实验系统DVCC实验系统)
3、单击工具栏上“新建”或“打开”按钮,编写源程序。单击“编译”按钮,
使其形成可执行文件。
4、单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最
右边第2个),实现PC机和实验箱的联接。联机成功,屏幕上出现:.反汇编窗口、
寄存器标示位窗口。
5、在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统
RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来
实现。
6、单击工具栏上“运行”或“单步”按钮,运行实验程序。
7、单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”
可显示数据窗口。鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单
击数据,可修改数据数值。
8、运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏
幕上OK,即可退出运行状态。
四、实验程序代码
1、把7000H~70FFH单元的内容清零。
程序代码:
ORG 0000H
8155可编程并行IO扩展接口实验
实验八、8155可编程并行I/O扩展接口实验
一、实验目的
1.熟悉8155并行接口芯片的基本工作原理及应用
2.掌握单片机与8155的接口电路设计和编程
二、实验设备
1.仿真器
2.8155可编程并行I/O扩展接口模块
3.单片机最小系统模块
4.数码管动态扫描显示模块
5.矩阵式键盘模块
三、实验要求
连接单片机最小系统、8155扩展接口实验模块、数码管动态扫描显示模块、矩阵式键盘模块,要求在键盘按下时,8位LED动态显示器上最低位显示相应的字符,以前的各位字符向高位推进1位。
四、实验原理
8155芯片内包含有256字节RAM,2个8位、1个6位的可编程并行I/O口,和1个14位定时器/计数器。由于8155既具有RAM又具有I/O口,因而是单片机系统中最常用的外围接口芯片之一。
4.1引脚说明
8155共40个引脚,采用了双列直插的封装,主要引脚功能如下:
◆AD7—AD0:地址数据总线;单片机和8155之间的地址、数据、命令、状态信息都是
通过它来传送的。
◆CE:片选信号线,低电平有效。
◆RD:存储器读信号线,低电平有效。
◆WR:存储器写信号线,低电平有效。
◆ALE:地址及片选信号锁存信号线,高电平有效。在下降沿时将地址及片选信号锁存到
器件中。
◆IO/M:IO接口与存储器选择信号线,高电平选择I/O,低电平选择存储器。
◆PA7—PA0:A口输出/输入线。
◆PB7—PB0:B口输出/输入线。
◆PC5—PC0:C口输出/输入或控制信号线,用作控制信号时其功能如下:
◆PC0:A INTR(A口中断信号线)
◆PC1:A BF(A口缓冲器满信号线)
I-O口输入输出,IO口并行电机运动控制
深圳大学实验报告
课程名称微型计算机技术
实验项目名称I/O口输入/输出,IO口并行电机运动控制学院医学院专业生物医学工程
指导教师张会生尹力
报告人谢智杰学号2010222043班级生工2班
实验时间2012年月日
实验报告提交时间2012年月日
单片机并口工作
单片机并口工作
1. 什么是单片机并口?
单片机并口(Parallel Port),也称为并行接口,是一种用于连接计算机和外部
设备的接口。它通过多个并行数据线同时传输数据,相比于串口(Serial Port)
来说,传输速度更快。
在单片机中,我们可以使用并口进行输入和输出操作。通过控制这些数据线的电平状态,我们可以实现与外部设备的通信。
2. 单片机并口的工作原理
单片机并口通常由8根数据线(D0-D7)、3根控制线(Strobe、Acknowledge、Busy)和5V电源线组成。
•数据线(D0-D7):用于传输8位二进制数据。
•控制线:
–Strobe:用于触发数据传输。
–Acknowledge:用于确认接收到的数据。
–Busy:指示外部设备是否可接收新的数据。
•5V电源线:为外部设备提供电源。
当我们要向外部设备发送数据时,首先将要发送的数据写入到8根数据线中。然后,通过将Strobe线拉低再拉高来触发数据传输。外部设备接收到数据后,会将Acknowledge线拉低表示已经成功接收到了数据。
而当我们要从外部设备读取数据时,首先将Strobe线拉低再拉高,通知外部设备
准备好数据。然后,通过读取8根数据线的电平状态来获取数据。如果外部设备正在发送数据,Busy线会被拉低,我们需要等待Busy线恢复高电平后再读取数据。
3. 单片机并口的应用
单片机并口广泛应用于各种外部设备的控制和通信中。下面介绍几个常见的应用场景:
3.1 打印机
在过去,单片机并口最常见的应用就是连接打印机。通过并口,我们可以向打印机发送打印任务,并获取打印机状态信息。
2单片机 实验报告并行口的应用
2单片机实验报告并行口的应用
6P1.5单脉冲——
7P1.6K61、学习P1口作为输入输出的使用方法。
8P1.7K72、学习延时子程序的编写和使用。
3、学习用‘与’、‘或’运算对51系列单片机的变量进行位操作。1、汇编语言
操作步骤如下:
(1)创建一个项目目录:shiyan31。1、Lab6000通用微控制器实验系统。
(2)如实验一的七.2,修改编译器为汇编语言编译器。2、计算机,WAVE集成调试软件。
(3)执行“新建文件”命令,在开发环境程序窗口中按汇编语言格式输入汇编语言源
程序。将程序文件名取为shiyan31.asm保存到目录“shiyan31”。
BuzB equ01、P1.6、P1.7作为输入接2个拨动开关K6、K7;BuzOut equ P1.4
Key1equ P1.5P1.5作为输入接“单脉冲”按键;Key2equ P1.6
Key3equ P1.7P1.0、P1.1、P1.2、P1.3作为输出接4个发光LED;
org0
P1.4作为输出接1个喇叭。;主程序
Start:程序开始运行时,4只LED闪;然后当按“单脉冲”键,4只LED闪;当拨“K6”
SLoop1:
开关至低电平时,4只LED从右到左逐个亮;当拨“K6”开关至高电平,拨“K7”开call LEDallflash
setb Key1关至低电平时,相隔的2只LED亮。jb Key1,SLoop1
SLoop2:
setb Key1jb Key1,SLoop3
call LEDallflash
sjmp SLoop2
SLoop3:
setb Key2jb Key2,SLoop4
8255并行接口实验
XX学院
实验报告
实验名称
姓名
学号
班级
教师
日期
一、实验内容与要求
1.1 实验内容
本次实验分为如下2个子实验:
(1)方式0练习实验:A,B口方式0输出,C口输入。K0上推:16个LED灯从左到右
流水。K1上推:16个LED等从右向左流水。K2上推:中间向两侧流水。K3上推:
两侧向中间流水。
(2)方式1练习实验:A口方式1输出,B口不用,C口控制口,每按KK1开关一下,LED
灯流水一下,8次后程序结束。
1.2 实验要求
本次实验中2个子实验的实验要求如下:
(1)方式0练习实验:要求A,B口以方式0输出,并且C口输入。当K0上推的时候,16
个LED灯从左到右流水。当K1上推的时候,16个LED等从右向左流水。当K2上推的时候,16个LED灯从中间向两侧流水。当K3上推的时候,16个LED灯从两侧向
中间流水;
(2)方式1练习实验:要求A口以方式1输出,C口作为控制口。要求每当按KK1开关一
下,LED灯流水一下,按8次后程序结束。
二、实验原理与硬件连线
2.1 实验原理
I/O
PA7-PA0
I/O
PC7-PC4
I/O
PC3-PC0
I/O
PB7-PB0
D0-D7
图3-1 8255内部结构及外部引脚图
并行接口是以数据的字节为单位与I/O设备或被控制的对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片
是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用
+5V单电源供
电,能在以下三种方式下工作:方式0—基本输入/输出方式、方式1—选通输入/输出方式、方式2—双向选通工作方式。8255的内部结构及引脚如图3-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3-2所示。
单片机实验 实验一 P1口实验
8279键盘/显示接口
电源电路
CPLD编码器单元
8255并行接口 8237接口 时钟端口
CPU板座
D/ A 接 口
LCD显示电路 8253接口 A/D接口
键盘输入电路
8259接口
244/273接口
输入输出电路
正负单脉冲源
复位键
实验一
一、实验目的
1、学习P1口的使用方法。
END
2、P1口作为输入口
开始
设置P1口为输入口
将P1口读入累加器A
A输出到27来自百度文库所指地址单元
开始
注:273的控制端CS273接到CS0上,其地址为0CFA0H
2、P1口作为输入口实验程序 ORG 0000H
LJMP START ORG START: MOV 4100H P1, #0FFH ;复位P1口为输入状态
1、P1口作为输出口实验程序
ORG 0000H LJMP START ORG 4100H START: MOV A, #0FEH LOOP: MOV P1, A LCALL DELAY RL A JMP LOOP
DELAY: MOV DEL1: MOV DEL2: DJNZ DJNZ RET R1, R2, R2, R1, #127 #200 DEL2 DEL1
P1口实验
单片机实验报告
目录
一、实验一 (1)
二、实验二 (7)
三、实验三 (11)
四、实验四 (15)
实验一定时/计数器验证实验
一、实验目的
熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时;
二、实验设备及器件
IBMPC机一台PROTEUS硬件仿真软件KeilC51;
三、实验内容
用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始;
四、实验要求
要求采用Proteus软件实现上述实验;
五、实验步骤
1.打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件;
元件全部添加后,在ProteusISIS的编辑区域中按图1-1所示的原理图连接硬件电路;
图1-1电路原理图
2.根据参考程序绘出流程图,并辅以适当的说明;
流程图如图1-2所示:
图1-2程序流程图
3.打开KeilμVision4,新建Keil项目,选择AT89C51单片机作为CPU,将参考程序导入到
“SourceGroup1”中;在“OptionsforTarget”对话窗口中,选中“Output”选项卡中的“CreateHEXFile”选项和“Debug”选项卡中的“Use:ProteusVSMSimulator”选项;
编译汇编源程序,改正程序中的错误;
4.在ProteusISIS中,选中AT89C51并单击鼠标左键,打开“EditComponent”对话窗口,
设置单片机晶振频率为12MHz,在此窗口中的“ProgramFile”栏中,选择先前用Keil生成的.HEX文件;在ProteusISIS的菜单栏中选择“File”→“SaveDesign”选项,保存设计,在ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中
单片机《输入输出口》实验报告
实验一I/O口输入输出实验
一、实验目的
1. 掌握单片机的并行I/O口的接口结构、驱动能力特点和应用处理方法;
2. 掌握单片机I/O引脚作为输出引脚的使用方法;
3. 掌握单片机I/O口配置方法
4. 掌握利用单片机I/O口设计单片机应用程序用输入控制输出的方法;
5. 掌握单片机控制程序的结构。
二、实验原理及实验内容
实验要求:利用单片机并行口做不规则花样流水灯,流水花样不低于16个。
实验原理:
1.LED原理图
2.STC15的IO口原理
P6m0为0时,P6m1为0时,IO口模式为准双向口(传统8051 I/O口模式,弱上拉)灌电流可达20mA,拉电流为270微安,由于制造误差,实际为270~150微安
* P6m0为0时,P6m1为1时,为推挽输出(强上拉输出,可达20mA,要加限流电阻)* P6m0为1时,P6m1为0时,(为高阻输出电流既不能流入也不能流出)
P6m0为1时,P6m1为1时,为开漏(Open Drain),内部上拉电阻断开。开漏模式即可读取外部状态也可以对外输出(高低电平)。
按照表格寄存器内容,我们对8个LED1,也就是P6口进行配置,当P6输出低电平时LED被点亮。所以配置如下:
P6M1 &= 0x00;
P6M0 &= 0x00; //作为普通IO口,为弱上拉
sbit KEY1=P2^0;
sbit KEY2=P2^1;//定义两个按键
由于STC15F2K60S2寄存器初始化时默认是:P6M1=0x00;
P6M0 = 0x00;
3.程序流程图
主循环程序流程图
三、实验程序
#include <STC15.h>
单片机自动测试设计实验 课程实验报告
西安电子科技大学
单片机自动测试设计实验课程实验报告
实验名称输出口实验
机电工程学院学院班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的时间顺序依次点亮发光二极管的控制程序。(要求写出程序)
六、实验结果
单片机实验报告范文
单片机实验报告范文
一、实验目的
通过本次实验,掌握单片机的基本原理与编程方法,熟悉单片机的开发环境,技能,了解单片机的必要电路原理。
二、实验器材和软件
器材:STC89C52单片机板、开发环境、PC机、线路板、电源、按钮开关、LED灯、蜂鸣器等。
软件:Keil uVision4编译器。
三、实验内容
1.点亮一个LED灯
将LED灯连接到单片机的1号引脚,通过编写程序点亮LED灯。
2.使用按钮开关控制LED灯
将按钮开关连接到单片机的2号引脚,编写程序使按钮开关控制LED 灯的亮灭。
3.通过串口将数据发送给PC机
设置单片机与PC机进行串口通信,通过编写程序将单片机中的数据发送给PC机。
四、实验步骤
1.按照实验器材和软件的要求搭建实验电路。
五、实验结果与分析
实验中点亮一个LED灯、使用按钮开关控制LED灯、通过串口将数据发送给PC机的实验均取得了预期的结果,显示出了单片机的基本原理与编程方法。
六、实验总结
通过这次实验,我深入了解了单片机的工作原理和编程方法,掌握了单片机的开发环境和技能,学会了使用单片机将数据发送到PC机,并能通过编程控制LED灯的亮灭。实验过程中也遇到了一些问题,如电路连接不正确、程序代码错误等,但通过仔细排查和调试,最终解决了问题。这次实验使我对单片机的实际应用有了更深的认识,也为今后进一步学习和应用提供了基础。
参考资料:
无。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机并行口实验报告
实验二并行口实验报告
班级:
学号:
姓名:
教师:
一、实验目的
通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。
二、实验内容
1、输出实验
如图4-1所示。以8031的P2口为输出口。通过程序控制发光二极管的亮灭。
2、输入实验
如图4-1所示。以8031的P1口为输入口。用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。
3、查询输入输出实验
如图1-1所示。以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。
图1-1
三、编程提示
1、输出实验程序
(1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。
(2)为了便于观察,每一状态加入延时程序。
2、输入实验程序
开关打开,则输入为1;开关闭合,则输入为0。读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。
3、查询输入输出程序
(1)编程计数P1.0按键次数,按键不去抖动。
(2)编程计数P1.6按键次数,按键不去抖动。
(3)编程计数P1.0按键次数,按键软件延时去抖动。
观察(1)、(2)、(3)、的结果。
四、实验器材
计算机,目标系统实验板
五、实验步骤
1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。
2、断开电源,按图1-1所示,连好开关及发光二极管电路。
3、下载程序。
4、调试运行程序,观察发光二极管状态。
六、C源程序清单
1、#include
#define uchar unsigned char
#define ON 0
#define OFF 1
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
void delay1(void);
void main(void)
{
led1=led2=led3=led4=led5=led6=led7=led8=O FF;
while(1)
{
led1=led8=ON;
delay1();
led2=led7=ON;
delay1();
led3=led6=ON;
delay1();
led4=led5=ON;
delay1();
led1=led8=OFF;
delay1();
led2=led7=OFF;
delay1();
led3=led6=OFF;
delay1();
led4=led5=OFF;
delay1();
}
}
void delay1(void)
{
uchar i,j,k;
for(i=0;i<10;i++)
for(j=0;j<100;j++)
for(k=0;k<255;k++);
}
2、#include
#define uchar unsigned char
sbit k8=P1^0; sbit k7=P1^1; sbit k6=P1^2; sbit k5=P1^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void main(void) {
while(1)
{
if(!k8)
led5=0;
if(!k7)
led6=0;
if(!k6)
led7=0;
if(!k5)
led8=0;
if(k8)
led5=1;
if(k7)
led6=1;
if(k6)
led7=1;
if(k5)
led8=1;
}
}
3、(1)和(2)
#include
#define uchar unsigned char sbit k8=P1^0;
sbit k2=P1^6;
void main(void)
{
uchar num1,num2;
n um1=0;
num2=0;
while(1)
{
if(!k8)
{
num1++;
P2=~num1;
}
if(!k2)
{
num2++;
P2=~num2;
}
}
}
3、(3)
#include
#define uchar unsigned char
void delay(uchar);
sbit k8=P1^0;
sbit k7=P1^1;
sbit k6=P1^2;
sbit k5=P1^3;
sbit k4=P1^4;
sbit k3=P1^5;
sbit k2=P1^6;
sbit k1=P1^7;
void main(void)
{
uchar num;
n um=0;
while(1)
{
if(!k3||!k4||!k5||!k6||!k7)
{