MCS-51系列单片微计算机-6a课件

上传人:我*** 文档编号:142104636 上传时间:2020-08-16 格式:PPT 页数:27 大小:187KB
返回 下载 相关 举报
MCS-51系列单片微计算机-6a课件_第1页
第1页 / 共27页
MCS-51系列单片微计算机-6a课件_第2页
第2页 / 共27页
MCS-51系列单片微计算机-6a课件_第3页
第3页 / 共27页
MCS-51系列单片微计算机-6a课件_第4页
第4页 / 共27页
MCS-51系列单片微计算机-6a课件_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《MCS-51系列单片微计算机-6a课件》由会员分享,可在线阅读,更多相关《MCS-51系列单片微计算机-6a课件(27页珍藏版)》请在金锄头文库上搜索。

1、6-3 8051的串行通讯端口的应用,例1. 利用串口方式0扩展并行I/O,75495、75497是常用的串/并、并/串转换移位寄存器,利用这些芯片及8051的串行端口工作方式0,可方便地扩展并行I/O接口,75495的原理图,75497的原理图,8051串行口扩展原理图,波形图,编程分析: 对于高速I/O(如机床位置反馈信号、运动脉冲控制信号等),使用中断处理比较合适,但对于普通I/O(如按钮开关、急停开关、限位开关、继电器、电磁阀等), 并不需要很快的响应速度,反而需要进行滤波处理,对这些信号的处理,一般在主程序中定时扫描即可,扫描周期应 5ms,一般不要超过100ms。 对于本例,对输入

2、输出的读写,用串口中断程序来实现,对这些I/O的逻辑运算和处理,则放在主程序中进行。在I/O处理完成后,通过写SBUF来启动I/O的读写(仅写一次),I/O的刷新由串口不断产生中断来完成。 由于同步串行传输速度快, 也可以采用查询的方式来实现串行端口的读写。,方案1: 利用定时器将主程序分为高速和低速处理2个节拍,利用中断实现I/O的读写,输入输出的刷新在同一节拍完成。程序简单,但响应有延时。,方案2: 利用定时器将主程序分为高速和低速处理2个节拍,利用中断实现I/O的读写,输入、输出的刷新分节拍完成。,方案3: 利用定时器将主程序分为高速和低速处理2个节拍,用查询实现I/O的读写,编程: 设

3、单片机晶振频率为12MHz,定时器T2定时时间为5ms,输入缓冲器地址为:20H21H (X_byte01),接收地址寄存器addr_X (30h) , 接收计数器cnt_X(31h); 输出缓冲器地址为:22H24H(y_byte02) ,发送地址寄存器addr_X (32h),发送计数器cnt_Y(33h);,中断向量: org0000h jmpmain org0023h jbcti, TxD_I jbri, RxD_I ; 不能用jbc reti org002bh ;jmpint_T0 ; 方案2 clrtf2 setbT_5ms reti,T2中断程序(方案2): Int_T2:clr

4、tf2 setbT_5ms movaddr_X, #X_byte1 movcnt_X, #02H clrP1.1 clrp1.0 setbp1.0 reti,写输出子程序: TxD_P:CLRTI;用jbc指令时可省略 SETBP1.1;选择输出 MOVR1, #02H MOV R0, # Y_byte2;送输出初始地址 TxD_P1: MOV A, R0;读输出缓冲器 MOV SBUF , A;发送 TxD_P2:JNBTI, TxD_P2;发送完1个字节? DECR0;修改地址 DJNZR1, TxD_P1 CLRP1.0;锁存输出 SETBP1.0;锁存输出 CLRP1.1 ;切换到输入

5、 RET,读输入子程序: RxD_P:MOVR0, #X_byte1;送输入首地址 MOVR1, #02H ;设置输入个数 CLRP1.1;选择输入 CLRP1.0;锁存输入端口状态 SETBP1.0 SETBREN;启动串口接收 RxD_P1:CLRRI RxD_P2: JNBRI, RxD_P2;接收完1个字节? MOV A, SBUF;读输入端口 MOV R0, A;缓冲器输入端口状态 DECR0;修改地址 DJNZR1, RxD_P1 CLRREN;停止读输入 CLRRI RET,写输出中断程序: TxD_I:CLRTI PUSHACC ; PSW 00H MOV R0, addr_Y

6、;送输出地址 DJNZcnt_Y, END_TI CLRP1.0 SETBP1.0 CLRP1.1 ;方案2无 CLRP1.0;方案2无 SETBREN; 方案2无 POP00H ; PSW ACC RETI END_TI: MOV A, R0;读输出缓冲器 MOV SBUF , A;发送 DECaddr_Y;修改地址 POP00H ; PSW ACC RETI,读输入中断程序: RxD_I:PUSHACC ; PSW 00H MOV A, SBUF;读输入端口 MOVR0, addr_X;送输入地址 MOV R0, A;RAM输入端口状态 DEC addr_X ;修改地址 DJNZcnt_X

7、, END_RI CLRREN;停止读输入 CLRRI END_RI: POP00H ; PSW ACC CLRRI RET,主程序公共部分: main:mov rcap2h, #0ech mov rcap2l, #78h movth2,#0ech mov tl2, #78h mov t2mod, #00h mov t2con, #04h;自动装载方式并启动 movaddr_X, #X_byte1 movcnt_X, #02h movaddr_Y, #Y_byte2 movcnt_Y, #03h movY_byte0, #00h ; 当输出低电平有效时为0ffh movY_byte1, #00

8、h ; 当输出低电平有效时为0ffh movY_byte2, #00h ; 当输出低电平有效时为0ffh callTxD_P callRxD_P movie, #1011xxxxb; 开中断 Start:callfastP; 处理高速要求程序,方案1主程序: jnbT_5ms, Start clrT_5ms callPLC_P movaddr_X, #X_byte1 movcnt_X, #02h movaddr_Y, #Y_byte1 movcnt_Y, #02h mova, Y_byte2 movsbuf, a jmpstart,方案2主程序: jnbT_5ms, Start jbREN,

9、start clrT_5ms callPLC_P movaddr_Y, #Y_byte1 movcnt_Y, #02h mova, Y_byte2 movsbuf, a jmpstart,方案3主程序: jnbT_5ms,Start clrT_5ms callRxD_P callPLC_P callTxD_P jmpstart,T2中断程序(方案2): Int_T2:clrtf2 setbT_5ms movaddr_X, #X_byte1 movcnt_X, #02H clrP1.1 clrp1.0 setbp1.0 reti,8051系列单片机仅有一个串行通信接口,若用于异步通信,本例也可以

10、用普通I/O口,用软件来实现,主程序用方案3,读输入子程序: RxD_P:MOVR0, #X_byte1;送输入首地址 MOVR1, #02H ;设置输入个数 CLRP1.1;选择输入 CLRP1.0;锁存输入端口状态 SETBP1.0 setbp1.2;准备接收 RxD_P1:movr2, #08h RxD_P2: movc, p1.2;读入一位 rlca clrp1.3;产生移位时钟 setbp1.3 ;产生移位时钟 djnzr2,RxD_P2;接收完一个字节? MOV R0, A;缓冲器输入端口状态 DECR0;修改地址 DJNZR1, RxD_P1 RET; 132us (12MHz)

11、,写输出子程序: TxD_P:SETBP1.1;选择输出 MOVR1, #02H MOV R0, # Y_byte2;送输出初始地址 TxD_P1: MOV A, R0;读输出缓冲器 movr2,#08h TxD_P2: rlca movp1.2, c clrp1.3 ;产生移位时钟 setbp1.3;产生移位时钟 djnzr2, TxD_P2;发送完1个字节? DECR0;修改地址 DJNZR1, TxD_P1 CLRP1.0;锁存输出 SETBP1.0;锁存输出 CLRP1.1 ;切换到输入,安全 RET; 116us(12MHz),例2 利用串口方式扩展数据存储器,由于串行通信(如I2C

12、 SPI)方式连线少,需要的芯片引脚少,可大大减小PCB板的面积,且芯片价格便宜,采用串行接口的芯片也越来越多(如串行EEPROM、D/A、A/D、温度传感芯片、实时日历时钟等),在单片机系统设计中的应用越来越广泛。 在一些8051系列单片机中,集成了串行接口,但也有一些单片机没有这些接口。由于单片机的I/O口可进行位操作,通过软件用普通I/O端口,很容易就可实现这些串行扩展,本例就以8051的P1口,和串行EEPROM 24C256为例,来说明这种扩展的设计方法。,24C256是一片32Kx8bit。具有3根地址选择线,最多可扩展8片。 24Cxx的内部有1664byte的页面写缓冲器,每次

13、写数据的个数不能超过页面的大小。也不能跨页面写。,从24C256的读写时序可以看出,写一个字节用的次数很频繁,用子程序来实现较好。,I2wr:clrscl movr3,#08h I2wr1: rlc a movsda,c setb scl clr scl djnz r3,I2wr1 setb sda I2wlp0: movc,sda ; 应答 jc I2wlp0 ; 应答? ret,对EEPROM的读写,数据源应能覆盖所有内部RAM单元,用addr_D来存放数据源的起始地址,用num来存放需要写数据的个数,用addrL addrH来存放写入EEPROM的内部起始地址。,; 数据源起始地址存放在

14、addr_D单元,数据个数存放在=num ; adrH adrL存放目标起始地址。 w_rom:setb scl setb sda; 停止 clr sda; 起始 mov a,#0a0h; 写命令字 call I2wr mov a,addrH call I2wr mov a,addrL call I2wr mov r0,addr_D mov r2,num,wdl31: mov r2,num wdl3: mov r3,#08h mov a,r0 wdl4: call I2wr inc r0 djnz r2,wdl3 clr sda setb scl; 停止 setb sda ; 停止 ret,R

15、_rom: setb scl setb sda;停止 clr sda;起始 mov a,#0a0h call I2wr mov a,adrH call I2wr mov a,adrL call I2wr setb sda setb scl clr sda; 起始 mov a,#0a1h; 写读命令 call I2wr mov r0,addr_D mov r2,num,rdl1: mov r3,#08h setb sda rdl2: setb scl mov c,sda rlc a clr scl djnz r3,rdl2 mov r0,a inc r0 djnz r2,rdl3 clr sda setb scl; 停止 setb sda; 停止 ret rdl3: clr sda; byte end setb scl ; byte end clr scl ; byte end jmp rdl1,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号