单片微型计算机课件 第7章(第三版)徐惠民_第1页
单片微型计算机课件 第7章(第三版)徐惠民_第2页
单片微型计算机课件 第7章(第三版)徐惠民_第3页
单片微型计算机课件 第7章(第三版)徐惠民_第4页
单片微型计算机课件 第7章(第三版)徐惠民_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章并行接口7.1内部I/O口及其应用

51的I/O口一般作为如下用途:

P0口:低8位地址,数据

P1口:I/O口

P2口:高8位地址

P3口:第二功能通道位第二功能说明P3.0RTD串行口输入P3.1TXD串行口输出P3.2INT0外中断0输入P3.3INT1外中断1输入P3.4T0计数器0输入P3.5T1计数器1输入P3.6WR外部数据存储器的写选通信号P3.7RD外部数据存储器的读选通信号表3.4通道3的第二功能7.1.1I/O口直接用于输入和输出

1.输出:MOVP0,AMOVP1,R1MOVP2,@R0锁存器QQDCP读锁存器内部总线写入读引脚P1.XVcc1101锁存器QQDCP读锁存器内部总线写入读引脚P1.XVcc1101001输入引脚数据:MOVP0,#0FFHMOVA,P0MOVR1,P0MOV@R0,P0

3.读-修改-写操作:先将端口数据读出,再运算,然后再写回端口

ORLP0,#0F0HANLP2,A锁存器QQDCP读锁存器内部总线写入读引脚P1.XVcc图7.1例7.1附图P1.0P1.1P1.3+P1.2+5V8031片外P1.31P1.3=1YP1.01P1.11读P1.0P1.1运算输出NP1.31P1.3=1YP1.01P1.11读P1.0P1.1运算输出NLOOP1: ORL P1, #08HLOOP2: MOV C, P1.3 JC LOOP2 ORL P1, #03H MOV E, P1.0 MOV F, P1.1 MOV C, E ANL C, F MOV D, C MOV C, E ORL C, F ANL C, /D MOV P1.2, C SJMP LOOP1图7.88155内部结构和引脚示意图ABC定时器256×8静态RAMPA0~PA7PB0~PB7PC0~PC5IO/MAD0~AD7CERDWRALERESETTINTOUT7.2.381551.8155引脚和方框图7.2.381552.8155I/O口工作方式AB口的工作方式:输入方式无条件传送方式输出方式选通(中断)方式C口工作方式:BSTBPC5BBFPC4BINTR输出方式PC3ASTBASTBPC2ABFABFPC1AINTRAINTR输出方式输入方式PC0ALT4ALT3ALT2ALT1口中断口换缓冲器满口选通输入51外设8155INTRBFSTBRDSTBBFINTRRD数据写入8155发中断51响应数据写入51,8155可以接受新数据输出51外设8155INTRBFSTBWR外设数据处理完8155发中断51响应数据写入外设8155可以接受新数据STBBFINTRWR数据写入8155外设接受数据7.2.381553.8155I/O口控制定时器高8位xxxxx101定时器低8位xxxxx100端口Cxxxxx011端口Bxxxxx010端口A

xxxxx001命令/状态寄存器xxxxx000

端口名称AD7AD6AD5AD4AD3AD2AD1AD08155端口地址分配表8155工作方式控制字

XXXXX000写D0D1D2D3D4D5D6D70输入1输出A口方式B口方式0禁止1允许A口中断B口中断00:ALT101:ALT210:ALT311:ALT4C口方式00无操作01停止计数10计满后停止11开始计数定时器方式8155工作方式状态字

XXXXX000读D0D1D2D3D4D5D6XB口中断请求B口缓冲器满A口中断请求A口缓冲器满A口中断允许B口中断允许定时器中断读出后清04.8155和51的连接(仅作为地址分析用)图7.118155和8031连接图+RESETALERDWRRESETALERDWRIO/M81558031P0.7...P0.0AD7...AD0EACE688PC5~PC0PB7~PB0PA7~PA0100000定时器高8位

00000

101定时器低8位

00000

100端口C00000

011端口B

00000

010端口A00000

001命令/状态寄存器

00000

000

端口名称AD7AD6AD5AD4AD3AD2AD1AD08155端口地址分配表8155端口地址00H~07H8155内部RAM地址08H~FFH4.8155和51的连接RESETALERDWRIO/M81558031P0.7...P0.0AD7...AD0EACE688PC5~PC0PB7~PB0PA7~PA0RESETALERDWRP2.7P2.601/0基本地址:0000H~00FFH

4000H~4007H图8.98155内部结构和引脚示意图ABC定时器256×8静态RAMPA0~PA7PB0~PB7PC0~PC5IO/MAD0~AD7CERDWRALERESETTINTOUT8.2.381555.8155内部定时器的使用定时器高8位

XXXXX

101定时器低8位

XXXXX

100端口C

端口B

端口A

命令/状态寄存器XXXXX

000端口名称AD7AD6AD5AD4AD3AD2AD1AD014位减计数器用3个控制字8155工作方式控制字

XXXXX000写D0D1D2D3D4D5D6D700无操作,不影响计数器操作01停止计数,若原来停,则无操作10计满后停止启动。若原来停,则装人长度后开始计数;若原来动,则当前计数满后,立即按新装长度开始计数;T0T1T2T3T4T5T6T7T8T9T10T11T12T13M1M200TIN单个方波01

连续方波10

单个脉冲11

连续脉冲T13~T0计数初值(4)开始计数终止计数00TIN单个方波01

连续方波10

单个脉冲11

连续脉冲T13~T0计数初值(3)终止计数开始计数计数范围:0002~3FFFH21例5.16共阳LEDDPd.gfecbaVccDPgfedcba10110000B0HC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,98H01234567897.351显示/键盘系统

7.3.1共阴LED的控制与编程序DPd.gfecba3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H0123456789C0H,F9H,A4H,B0H,99H,92H,82H,F8H,

80H,98HDPgfedcba0100111104FH=B0H图7.138155和LED显示器的接口01001111PA7...PA0PC5...PC08155110111001000位码10110000段码(共阳)0902030508087AH7FH设置8155设置显示缓冲器首地址设置起始位码从C口送新位码从A口送新段码修改数据指针和位码6LED都显示一遍NRETY?找段码?如何判断DISP:MOVA,#05H;8155方式字

MOVDPTR,#8000H;8155命令口地址

MOVX@DPTR,A;写入方式控制字

MOVR0,#7AH;送数据块首地址

MOVR3,#01;位码,最右一位先亮

MOVA,R3LD0:MOVDPTR,#8003H;8155C口地址

MOVX@DPTR,A;位码从C口输出

MOVDPTR,#8001H;8155A口地址

MOVA,@R0;待显示数据送AADDA,#13;查表修正量

MOVGA,@A+PC;查表取段码

MOVX@DPTR,A;A口输出段码

p.214程序

ACALLDL1;延时1msINCR0;修改数据指针

MOVA,R3JBACC.5,LD1;6位数都显示则结束

RLA;没显示完,位码左移

MOVR3,A;位码暂存

AJMPLD0;转回,显示下一个数码LD1:RETDTAB:DBC0H,F9H,A4H,B0H,99H

图8.156×5非编码键盘及其接口PC5PC4PC3PC2PC1PC0PB4...PB08155543210432100147F258E369DCBAF7BDE11011111101001000行坐标08H列信号1DH送行坐标读列信号行坐标变成行号取列信号特征值合成键特征值3D转换成键值A??8.3.3非编码键盘和51接口关LED送行坐标,读列信号全盘有键按下准备下行扫描RET扫描完成NY存行坐标和列信号NRETN全盘有2键按下Y延时20msY调用KCODEY存行坐标和列信号NN该行有键按下键盘扫描程序NEXT1NEXT2NEXT3NEXT4NEXT4LOOPSCAN:MOVA,#0FFHMOVDPTR,#8001H;A口地址

MOVX@DPTR,A;关显示器

MOVA,#3FH;使行信号全为0MOVDPTR,#8003H;C口地址

MOVX@DPTR,A;C口输出

MOVDPTR,#8002H;B口地址

MOVXA,@DPTR;读列信号到B口

ANLA,#1FHCJNEA,#1FH,NEXT1;列信号不为全1,则转移

SJMPNEXT4;无键按下,结束NEXT1:ACALLD20ms;调20ms延迟子程序,消抖动

CLRCMOVR1,#01H;准备行扫描

MOVR2,#00H;设窜键标志LOOP:INCDPTR;C口地址p.217程序

MOVA,R1MOVX@DPTR,A;检测某一行是否按键

MOVDPTR,#8002H;B口地址

MOVXA,@DPTR;输入列信号值

ANLA,#1FHCJNEA,#1FH,NEXT2;列信号不为全1,该行有键按下NEXT2:INCR2;R2加1表示查到一处按键

CJNER2,#01H,NEXT4;R2不等于1即表示窜键

MOVR4,A;存按键的列坐标

MOVA,R1MOVR3,A;存按键的行坐标NEXT3:MOVA,R1RLCA;准备扫描检测下一行

MOVR1,A;暂存

CJNEA,#40H,LOOP;未到最后一行则循环

AJMPKCODE;转至键码子程序

RETCLRA;A=0表示这次扫描无效NEXT4:RET送行坐标读列信号行坐标变成行号取列信号特征值合成键特征值3D转换成键值AKCODE(R3)=行坐标(R4)=列信号行坐标右移次数变成行号,暂存R1高4位取列信号低4位和R1高4位合并成为键特征值放人A倒查表得到键值放人ARETKCODE:MOVR1,#0;行坐标初值为0MOVA,R3;SCAN中的行坐标码送ACLRC;准备移位LOOP:RRCA;右移一位

JZNEXT1;为0则移位结束

INCR1;行坐标值加1SJMPLOOP;NEXT1:MOVA,R1;SWAPA;行坐标值移到高4位

MOVR1,A;行坐标值暂时存放R1MOVA,R4;SCAN中的列坐标码送A ANLA,#0FH;取低4位

ORL A,R1;形成键特征值

MOVB,A;暂时存放Bp.218程序KCODE:MOVDPTR,#KTAB;准备倒查表

MOVR0,#0;倒查表次数计数器

CLRA;从0查起REPE:MOVCA,@A+DPTR;CJNEA,B,NEXT2;与键特征码不等则转移

SJMPRESU;相等则结束查表NEXT2:INCR0;计数值加1MOVA,R0;准备检查下一个数

SJMPREPE;RESU:MOVA,R0;存放键顺序值

RETKTAB:DB:0FH,1FH,17H,1BH,2FH,27H,2BHDB:3FH,37H,3BH,3DH,2DH,1DH DB:0DH,0BH,7.3.3显示/键盘系统(硬件)80318155键盘显示LED驱动器C口B口A口驱动器7.3.3显示/键盘系统(软件)8155初始化显示一遍数据扫描键盘有键按下数字键处理是数字键命令键处理K1KmNNYY……START: MOV DPTR,#8000H MOV A, #05H MOVX @DPTR,A ACALLDISP ACALLSCAN JZ START ACALLKCODE CJNE A, #10H, CONTCONT: JC NUM MOV DPTR,#JTAB SUBB A, #10H RL A JMP @A+DPTRJTAB: AJMP K1 AJMP K2…………NUM:…………7.451内部定时/计数器及其应用特点:(1)多种工作方式,用于计数和定时;(2)加计数,模值可变;(3)全1变成全0后,可以发出中断申请;(4)TX=THX+TLX7.4.1工作方式T0分为两个8位计数器方式38位计数,自动再装入方式方式216位计数器方式113位计数器方式0功能工作方式7.4.1工作方式1.方式0:13位计数器THxTLx0074计数输入TFx计数1000,装入213-1000=1110,0000,1,1000

THx=E0HTLx=18H装数、加计数、全1变全0、发中断申请7.4.1工作方式2.方式1:16位计数器THxTLx0077计数输入TFx计数1000,装入216-1000=1111,1100,0001,1000

THx=FCHTLx=18H装数、加计数、全1变全0、发中断申请7.4.1工作方式3.方式2:8位计数,自动再装入方式计数200,装入28-200=0011,1000THx=38HTLx=38HTHx和TLx装数、TLx加计数、全1变全0、发中断申请(THx)TLx

TLx重新计数,THx内容不变THxTLx0077计数输入TFx7.4.1工作方式4.方式3:T0分为两个8位计数器TH0TL00077计数输入TF0内部脉冲定时输入TF1TH1TL10077内部脉冲定时输入TF1X7.4.2控制1.定时器方式控制寄存器TMOD(89H)00方式001方式110方式211方式3计数方式定时方式10与INTX有关1与INTX无关0M0M1GATEM0M1GATEC/TC/T控制T0控制T1图7.17计数方式的控制逻辑(以T1为例)+中断开放ET1TR1GATE1TNT1晶振÷12计数器TF1中断T1C/T=0C/T=111011开始计数12.定时/计数器的启动和中断控制TR0TF0TR1TF1TCON8C8D8E8F88H1:开始计数T10:停止计数T01:溢出中断T10:未溢出T0ET0EAIEA9AFA8HABET11:允许中断T10:禁止中断T0初始化(1)写TMOD,确定工作方式;(不能位寻址)(2)确定计数初值,写入TH1,TL1,TH0,TL0

(3)写IE,开放定时器中断;(4)写TCON的TR1或者TR0,开启定时器。M0M1GATEM0M1GATEC/TC/TTR0TF0TR1TF1TCON8C8D8E8F88HET0EAIEA9AFA8HABET1计数初值的计算:M:计数最大值,28,213,216X:初值计数方式:X=M-计数模值例如:计数模值1000,

X=216-1000=1111,1100,0001,1000

THx=FCHTLx=18H

X=213-1000=1110,0000,1,1000

THx=E0HTLx=18HX=28-1000<0???计数初值的计算:M:计数最大值,28,213,216X:初值定时方式:X=M–计数模值

=M–(定时值/计数周期T)例如:定时值1ms

(1)Fsc=12M,T=12*Tsc=1u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论