诃-什么叫ipo
实验三 4.1 P3.3口输入、P1口输出实验
系别专业:电子系12级电信2班
学号:3121003210
姓名:李书杰
指导老师:刘志群老师
4.1.1 实验要求
1. 复习 Keil
C51调试硬件的操作方法。
2. 复习单片机作为通用 IO口的注意事项。
3.
复习单片机操作 IO口的程序设计方法。
4.1.2 实验设备
PC 机一台,TD-
NMC+教学实验系统
4.1.3 实验目的
1. 熟悉单片机仿真实验软件 Keil
C51调试硬件的方法。
2. 了解 P3、P1口作通用 IO口的使用方法。
3.
掌握延时子程序的编写和使用方法。
4. 了解单片机对简单 IO的扩展方法。
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位为行扫描字
SKEY2:MOV A,R3
MOV P1,A ;输出行扫描字,高4位全1
NOP
NOP
NOP
MOV
A,P1 ;读列值
MOV R1,A ;暂存列值
ANL A,#0F0H ;取列值
CPL A
;高电平则有键闭合
S123:JNZ SKEY3 ;有键按下转SKEY3
INC R0 ;行计数器加1
SETB C
;准备将行扫描左移1位,
;形成下一行扫描字,C=1保证输出行扫描字中高4位全为1,
;为列输入作准备,低4位中只有1位为0
MOV A,R3
;R3带进位C左移1位
RLC A
MOV R3,A
;形成下一行扫描字→R3
MOV A,R0
CJNE
A,#04H,SKEY1 ;最后一行扫(4次)完了吗?
EKEY:RET
;列号译码
SKEY3:MOV A,R1
JNB ACC.4,SKEY5
JNB
ACC.5,SKEY6
JNB ACC.6,SKEY7
JNB
ACC.7,SKEY8
AJMP EKEY
SKEY5:MOV A,#00H
MOV R2,A ;存0列号
AJMP
DKEY
SKEY6:MOV A,#01H
MOV R2,A
;存1列号
AJMP DKEY
SKEY7:MOV A,#02H
MOV R2,A ;存2列号
AJMP DKEY
SKEY8:MOV A,#03H
MOV R2,A
;存3列号
AJMP DKEY
;键位置译码
DKEY: MOV
A,R0 ;取行号
ACALL DECODE
AJMP
EKEY
;键值(键号)译码
DECODE:MOV A,R0 ;取行号送A
MOV B,#04H ;每一行按键个数
MUL AB
;行号×按键数
ADD A,R2 ;行号×按键数+列号=键值
RET
实验 2
根据TD-
NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:
将 P3.3口作状
态输入口(接一个逻辑开关,即拨码开关),P1口做输入口(接八只发光二
极管D0~D7)。当
P3.3=1时循环轮流点亮一个 LED灯;当 P3.3=0时循环轮流点亮相邻
两个LED灯。
程序如下:
BUFF EQU 30H
KEYADR:MOV A,BUFF ;键号→A
CJNE A,#0FH,KYARD1
AJMP DIGPRO
;等于F,转数字键处理
KYARD1:JC DIGPRO
;小于F,转数字键处理
KEYTBL:MOV DPTR,#JMPTBL
;送功能键地址表指针
CLR C ;请进位位
SUBB A,#10H ;功能键值(10H~1FH)减16
RL A ;(A)×2,使(A)为偶数:0,2,4,…
JMP @A+DPTR ;转相应的功能键处理程序
JMPTBL: AJMP
AAA
AJMP BBB
AJMP CCC
AJMP DDD
AJMP EEE
AJMP FFF
AJMP GGG
AJMP
HHH
AJMP III
AJMP JJJJ
AJMP KKK
AJMP LLL
AJMP MMM
AAA:
DIS: MOV R0,#7EH
;显示缓冲区末地址→R0
MOV R2,#01H
;位控字,先点亮最低位(右边)
MOV A,R2
MOV DPTR,#TAB
;字型表头地址→DPTR
LP0: MOV P1,A
MOV A,@R0
;取显示数据
MOVC A,@A+DPTR ;取出字形码
MOV P0,A ;送出显示
ACALL D1MS
;调延时子程序
DEC R0 ;数据缓冲区地址减1
MOV A,R2
JB ACC.5,LP1 ;扫描到最左面的显示器了吗?
RL A ;没有到,左移1位
MOV R2,A
AJMP LP0
LP1: RET
TAB: DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
DB
6FH,77H,7CH, 39H,5EH,79H,71H,40H,00H
D1MS: MOV
R7,#02H ;延时1 ms子程序
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL
RET
4.1.5 实验单元电路及连线
开关及 LED显示单元
4.1.6 实验说明
1、
P1口是准双向口,作输出口时与一般的双向口使用方法相同。由准双向口结构可知
当
P1口作输入口时,必须先对它置高电平,同时内接上拉电阻(20KΩ~40
KΩ),使内部
MOS截止,这样对外部输入不会产生影响,否则会使读入的数据不正确。
2、 由于机械键盘的抖动作用,常常通过硬件
RS或软件延时的方法去除机械抖动。使
用软件延时方法时注意延时子程序的编写。
3、
发光二极管的需要5~10mA的驱动电流,1.7~2.4V的驱动电压。
4、循环轮流点亮LED,可以通过循环移位指令实现。
4.1.7 思考题
1.
8051系列单片机的四个并行口可以作准双向
IO使用,当它们作为输入口时,必须先向
端口输入高电平,为什么?
解: IO是开漏的
,如果输入低电平,该口无论输入高低电平都会被拉至低,所以电平,也就
无法正确识别输入电平。
2. 编写按键(如拨码开关)程序时,应注意什么问题?
解:根据不同的拨码开关状态,在程序里写相应拨码开关的程序。
3.
若系统晶振为12MHz,试编写一个延时 10ms的程序段。
MOV R5,#5
D1: MOV R6,#4
D2: MOV R7,#248
DJNZ
R7,$$
DJNZ R6,D2
DJNZ R5,D1
RET
4. 本实验中,允许单片机的 IO口直接驱动 LED灯,为什么?
解:单片机的IO
口的高电平接近电源电压+5V,而发光二极管的工作电压为2V以下,因此
需要串接降压电阻,但在此
实验中使用低电平驱动,所以允许单片机的 IO口直接驱动 LED
灯。
oo的发音-我的家人英语
分歧的意思-文件夹英文
一会儿的英语-尒
紧缚-概念股什么意思
潇潇暮雨子规啼的意思-高一英语课本
slice是什么意思-513
百的拼音-唱歌英文
怀念的意思-结果是英语
-
上一篇:P3.3口输入 P1口输出
下一篇:《三口棺材》读后感