已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章 单片机的串行扩展技术 71 什么是单片机应用系统的并行扩展? 什么是单片机应用系统的串行扩展? 各有什么特点?发展趋势如何?答: (1)单片机的外围并行扩展 单片机的外围并行扩展是指单片机与外围扩展单元采用并行接口的连接方式,数据传输为并行传送方式。 (2)单片机的外围串行扩展 单片机的外围串行扩展是指单片机与外围扩展单元采用串行接口的连接方式,数据传输为串行传送方式。 (3)并行扩展和串行扩展的特点 外围并行扩展数据传输速度较高,但扩展电路较复杂。 串行总线扩展,可大大简化系统结构,降低了成本,提高了可靠性,但是数据传输速度较低。 (4)发展趋势 早年,单片机都提供了较完善的并行总线,以便通过并行扩展程序存储器、数据存储器、I/O口和外围接口。而且,许多外围接口器件也相应配备有并行总线接口,以实现扩展。但是,并行总线与思了大量引脚资源。后来,随着片内OTP ROM、MTP ROM以及外围电路串行接口的发展,单片机串行扩展接口设置的普遍化、高速化,以及在片FLASH ROM不必外部并行扩展EPROM,使得单片机的并行接口技术己日渐衰退。采用串行接口可以大大减少引脚数量,简化系统结构,提高了系统的可靠性和抗干扰能力。 与串行总线相比,并行总线有极快的数据传输速度,因此并行总线型单片机仍应用于要求快速数据传送的外围通道接口中。另外,许多总线型单片机都提供了并行总线与I/O口的复用功能,当并行总线不使用时,可作为I/O口使用,不会造成并行总线引脚资源的浪费。7 2 什么是 80C51虚拟 UART方式 0串行扩展接口?它和 UART方式0的区别在哪里?答: UART方式0是以UART中的移位寄存器方式实现各种外围器件的扩展的;而虚拟UART方式0串行扩展是指使用通用I/O口以虚拟的移位寄存器工作方式来实现串行外围接口的扩展的。 两者的区别在于: UART方式0串行扩展使用80C51中的UART资源(RXD、TXD),而虚拟UART方式0串行扩展只需使用任意两根I/O端口线即可。73 使用虚拟 UART方式0串行扩展时,归一化子程序中哪些符号单元? 这些符号单元在使用中如何定义?答: 虚拟UART方式0串行扩展时,归一化子程序中的符号单元有 MTD: 发送数据缓冲区首地址; MRD: 接收数据缓冲区首地址; VRXD: 虚拟接收端口; VTXD: 虚拟发送端口。 符号单元在调用归一化子程序前必须予以定义,如: MTD EQU 30H MRD EQU 40H VRXD EQU Pl.5 VTXD EQU Pl.674 什么是 80C51虚拟I2C总线? 它和 I2C总线有何不同? 什么情况下可用虚拟 I2C总线?什么时候必须用I2C总线?答: (1)虚拟I2C总线 I2C总线是一种双向同步串行数据传输总线。在没有I2C总线接口的单片机中,用两根I/O口线来模拟I2C总线接口的技术,称为I2C总线虚拟技术,所模拟的总线,称为虚拟I2C总线。 (2)虚拟I2C总线和I2C总线的不同 虚拟I2C总线接口只适用于单主系统下的主发送和主接收;在多主的I2C总线应用系统中,必须采用带有I2C总线接口的单片机。 (3)虚拟I2C总线的使用条件 在多主的I2C总线系统中,一定使用带I2C总线接口的单片机。如果没有I2C总线接口的单片机,要构成多主系统的虚拟I2C总线,必须在虚拟PC总线中解决多主竞争状态,这几乎是不可能的。 在单主方式的I2C总线系统中,总线上只有一个单片机,其余都是带I2C总线的外围器件。由于总线上只有单片机成为主节点,该单片机永远占据总线,不会出现总线竞争,主节点也不必有自己的节点地址。在虚拟的I2C总线上,只有主方式下的主发送和主接收两种操作方式。75 虚拟I2C总线软件包 VIIC为什么只试用于主方式下? 单片机应用系统中什么状态的I2C总线工作在主方式下?答: 因为虚拟I2C总线通用软件包VIIC是在单主方式下设计而成的,也只有在单主方式下才允许I2C总线的虚拟。单片机应用系统中,总线上只有一个单片机,其余都是带I2C总线的外围器件。单片机成为主节点,永远占据总线,不会出现总线竞争,这时的I2C总线工作在主方式下。76 虚拟 I2C总线软件包 VIIC由哪些子程序构成?占用哪些单片机资源?答: (1)虚拟I2C总线通用软件包VIIC的组成 虚拟I2C总线通用软件包VIIC包含以下两种类型、九个子程序: 信号模拟子程序: 启动I2C总线(STA)子程序; 停止I2C总线的数据传输(STOP)子程序; 发送应答位(MACK)子程序; 发送非应答位(MNACK)子程序。 通用子程序: 应答位检查(CACK)子程序; 向VSDA线上发送一个数据字节(WRBYT)子程序; 从VSDA线上读取一个数据字节(RDBYT)子程序; 虚拟I2C总线发送N字节数据(WRNBYT)子程序; 虚拟I2C总线接收N字节数据(RDNBYT)子程序。 (2)虚拟I2C总线通用软件包VIIC占用的单片机资源 虚拟I2C总线软件包VIIC可以设置在程序存储器的任何空间; 占用两根I/O线(VSDA数据线、VSCL时钟线); 在片内RAM区,占用:发送数据缓冲区、接收数据缓冲区、寻址字节(SLA W/R)存放单元、传送数据字节数N存放单元;子程序中,还占用:R0、Rl、R2、R3、F0及C。77 虚拟 I2C总线软件包 VIIC中有哪些符号单元? 在应用中怎样来定义这些符号单元?答: (1)虚拟I2C总线软件包VIIC中的符号单元 VSDA: 虚拟I2C总线数据线; VSCL: 虚拟I2C总线时钟线; MTD: 发送数据缓冲区首地址; MRD: 接收数据缓冲区首地址; SLA: 寻址宇节(SLA W/R)存放单元; NUMBYT: 传送数据字节数N存放单元。 (2)在应用中符号单元的定义 使用通用虚拟I2C总线软件包VIIC时,应事先用伪指令分配好这些符号地扯。如VSDA EQU P1.7VSCL EQU P1.6SLA EQU 50HNUMBYT EQU 51HMTD EQU 30HMRD EQU 40HSLAW EQU 外围器件寻址字节(写)SLAR EQU 外围器件寻址字节(读)78 请参考基本练习7一7基本练习7-12,设计图7-20虚拟I2C总线演示系统的演示软件包。以图7-25为核心,设计4组按键操作程序,例如:按Kl,给PCF8591送数进行D/A转挨,然后进行A/D转挨,在LED上同时显示D/A转换数据与A/D转换结果,并点亮Ll;按K2,码盘中的数送入E2PROM中,并点亮1、2;按K3,E2FROM中的码盘数据显示在LED显示器上,并点亮L3;按K4,LED显示器上轮流显示RAM中的数据,并点亮L4。答:根据题意编程如下VSDA EQU P1.7VSCL EQU P1.6NUMBYT EQU 51HMTD EQU 30HMRD EQU 40H;SLAW EQU 0A0H ;E2PROMSLAR EQU 0A1HSUBSDR EQU 50H ;E2PROM中指定存储单元的首址;SLAW1 EQU 70H ;SAAl064(1)COM1 EQU 77H ;SAAl064(1)命令BCDST1 EQU 60H ;SAAl064(1)显示缓冲区SLAW2 EQU 76H ;SAAl064(2)COM2 EQU 77H ;SAAl064(2)命令BCDST2 EQU 64H ;SAAl064(2)显示缓冲区;SLAW3 EQU 40 H ;PCF8574 MK4LED4,A2=A1=A0=0SLAR3 EQU 41H;SLAW31 EQU 42H ;PCF8574码盘CD(l),A2=Al=0,A0=1SLAR31 EQU 43H;SLAW32 EQU 44H ;PCF8574码盘CD(2),A2=A0=0,;Al=1SLAR32 EQU 45 H ;SLAW4 EQU 90H ;PCF8591SLAR4 EQU 91HCOM4 EQU 40 H ;PCF8591中DAC命令;COM4=40H:允许模拟量输出COM5 EQU 01 H ;PCF8591中ADC命令;COM5=01:选择ANl,单端输入,不允许模拟量输出 ORG 0AJMP MK4LED4ORG 0013H ;INTl中断入口地址IK4LED4: LJMP VK4LED4 ;从中断入口转移到中断服务程序ORG 100HMK4LED4: MOV SP,#70H ;初始化栈指针MOV MTD,# 0FFH ;PCF8574初始化,P0P3置输入;状态,熄灭LEDMOV SLA,# SLAWS ;指向I2C总线节点地址40HMOV NUMBYT,#01H ;写入一个字节LCALL WRNBYT ;将0FFH写入PCF8574SETB EA ;开CPU中断SETB EX1. ;开INTl中断SJMP $ ;等待中断;中断服务程序VK4LED4: CLR EA ;关中断CLR EX1MOV SLA,#SLAR3 ;读人PCF8574口状态MOV NUMBYT,#01H ;读出一个字节LCALL RDNBYTMOV A,MRDJB ACC.0,IOP1 ;查是否是Kl按下,不是则查K2AJMP DIS1 ;是Kl按下,转Ll点亮程序IOPl: JB ACC.1.IOP2 ;查是否是K2按下,不是则查K3AJMP DIS2 ;是K2按下,转L2点亮程序IOP2: JB ACC.2,IOP3 ;查是否是K3按下,不是则查K4AJMP DIS3 ;是K3按下,转L3点亮程序IOP3: JB ACC.3,K4END ;查是否是K4按下,不是则转;中断返回AJMP DIS4 ;是K4按下,转L4点亮程序K4END: RETI DSJ;给PCF8591送数进行D/A转换,然后进行A/D转换;在LED上同时显示D/A转换数据与A/D转换结果;点亮LlDSl: MOV A,#34H ;给出数据MOV B,A ;暂存DAC数据ACALL VDACACALL VDAC ;进行A/D转换,转换数据在ACC中PUSH ACC ;保护A/D转换数据MOV R0,#BCDST2 ;指向显示缓冲区MOV R0,#0DH ;DINC R0MOV R0 ;#0AH;AINC R0MOV A,B ;取来DAC转换数据ANL A,#0F0H ;屏蔽低4位,保留高4位SWAP A ;高4位换到低4位MOV R0,AINC R0MOV A,B ;取来DAC转换数据ANL A,#0FH ;屏蔽高4位,保留低4位MOV R0,AALALL VSAAD42POP ACC ;弹出A/D转换数据MOV B,A ;暂存A/D数据MOV R0,#BCDST2l ;指向显示缓冲区MOV R0,#0AH ;AINC R0MOV R0,#0DH ;DINC R0MOV A,B ;取来ADC转换数据ANL A,#0F0H ;屏蔽低4位SWAP A ;换到低4位MOV R0,AINC R0MOV A,B ;取来DAC转换数据ANL A,#0FH ;屏蔽高4位MOV R0,AALALL VSAAD41MOV MTD,#0EFH ;Ll点亮程序MOV SLA,#SLAW3MOV NUMBYT,#0lHLCALL WRNBYTSETB EA ;开中断 SETB EX1RETI;将码盘中的数送入E2PROM中;并A亮L2DS2: ACALL CD8 ;读入码盘数据MOV R0,#MTD ;发送缓冲区首址入R0PUSH ACC ;保护ACC中数据MOV A,B ;取来B(千、百位)中数据MOV R0,AINC R0POP ACC ;取来ACC(拾、个位)中数据MOV R0,AMOV SLA,#SLAW ;指向总线上寻址字节(写)为;#SLAW的节点MOV NUMBYT,#2 ;写入数据字节为2LCALL WRNBYT ;调归一化发送N个字节子程序MOV MTD,#0DFH ;L2点亮程序AJMP DSJ;E2PROM中的码盘数据显示在LED显示器上;点亮L3DS3: MOV MTD,#SUBSDR ;向AT24C02写入 SUBSDR;SLAW=A0HMOV SLA,#SLAWMOV NUMBYT,#1LCALL WRNBYTMOV SLA,#SLAR ;从AT24C02中SUBADR指定;首地址读出2个数据MOV NUMBYT,#02HLCALL RDNBYTMOV R0,#MRDMOV A,R0MOV B,AINC R0MOV A,R0PUSH ACC ;保护ACC数据MOV R0,BCDST2 ;指向显示缓冲区MOV A,BANL A,#0F0H ;屏蔽低4位SWAP A ;换到低4位MOV R0,AINC R0MOV A,BANL A,#0FH ;屏蔽高4位MOV R0,AINC R1POP ACCMOV B,AANL A,#0F0H ;屏蔽低4位SWAP A ;换到低4位MOV Rl,AINC R1MOV A,B ;取来ACC转换数据ANL A,0FH ;屏蔽高4位MOV Rl,AALALL VSAAD42MOV MTD,#0BFH ;L3点亮程序AJMP DSJ;LED显示器上轮流显示RAM中的数据;点亮L4DS4: MOV R0,#20H MOV R2,#40H MOV Rl,#BCDST2 ;指向显示缓冲区DS41: MOV A,R0 MOV B,A ANL A,#0F0H ;屏蔽低4位SWAP A ;换到低4位MOV Rl,A INC Rl MOV A,B ANL A,#0FH ;屏蔽高4位 MOV R0,A ACALL VSAAD42 ACALL DELAY ;延时INC Rl INC R0 DJNZ R2,DS41 MOV MTD,#7FH ;L4点亮程序AJMP DSJ ;VAT24W:ACALL WMOV9 ;将写入的数据连同SUBADR送入MTDMOV SLA,#SLAW ;指向总线上寻址字节(写)为;#SLAW的节点MOV NUMBYT,#9 ;写入数据字节为9LCALL WRNBYT ;调归一化发送N个字节子程序RETWMOV9:MOV R0,#MTD ;发送缓冲区首址入R0MOV R0,#SUBADR ;指定存储单元首址INC R0MOV Rl,#60H ;数据区首址入RlMOV R2,#8 ;移动数据字节数入R2WMOV: MOV A,RlMOV R0,AINC R1INC R0DJNZ R2,WMOVRETVAT24R:MOV MTD,#SUBSDR ;向AT24C02写入SUBSDRMOV SLA,#SLAW ;SLAW=A0HMOV NUMBYT,#1LCALL WRNBYTMOV SLA,#SLAR ;从AT24C02中SUBADR指定;首地址中读出8个数据MOV NUMBYT,#08HLCALL RDNBYT ;调数据转移子程序ACALL RMOV8RETRMOV8:MOV R0,#MRD ;将8个数据从MRD转移到60H;67H中MOV Rl,#60HMOV R2,#8RMOV: MOV A,R0MOV Rl,AINC R0INC R1DJNZ R2,RMOVRETVSAAD41: MOV Rl, # MTD ;对SAAl064(1)节点操作,#MTD;入RlMOV Rl,#00H ;SUBADR入MTDINC R1MOV Rl,#COMl ;COMl入MTD十lINC R1 ;指向MTD+2MOV R0,#BCDSTl ;SAAl064(1)显示缓冲区首址;入R0LCALL XCTAB ;调BCD码转换成段码子程序MOV SLA,#SLAW1 ;指向SAAl064(1)节点MOV NUMBYT,#06H ;发送6个字节数据LCALL WRNBYT ;调归一化子程序RETVSAAD42: MOV Rl, # MTD ;对SAAl064(2)节点操作,#MTD;入RlMOV R1,#00 ;SUBADR入MTDINC RlMOV R1,#COM2 ;COM2入MTD十lINC Rl ;指向MTD+2MOV R0,#BCDST2 ;SAAl064(2)显示缓冲区首址; 入R0LCALL XCTAB ;调BCD码转换成段码子程序MOV SLA,#SLAW2 ;指向SAAl064(2)节点MOV NUMBYT,#06H ;发送6个字节数据LCALL WRNBYT ;调归一化子程序RETVSAAD8: MOV Rl, # MTD ;对SAAl064(1)节点操作,#MTD; 入RlMOV R1,#00H ;SUBADR入MTDINC RlMOV R1,#COM1 ;COMl入MTD+lINC Rl ;指向MTD+2MOV R0,# BCDST1 ;SAAl064(1)显示缓冲区首址; 入R0LCALL XCTAB ;调BCD码转换成段码子程序MOV SLA,#SLAW1 ;指向SAAl064(1)节点MOV NUMBYT,#06H ;发送6个字节数据LCALL WRNBYT ;调归一化子程序MOV Rl, # MTD ;对SAAl064(2)节点操作,#MTD; 入RlMOV Rl,#00H ;SUBADR入MTDINC R1MOV Rl,#COM2 ;COM2入MTD+lINC R1 ;指向MTD+2MOV R0,#BCDST2 ;SAAl064(2)显示缓冲区首址; 入R0LCALL XCTAB ;调BCD码转换成段码子程序MOV SLA,#SLAW2 ;指向SAAl064(2)节点MOV NUMBYT,#06H ;发送6个字节数据 LCALL WRNBYT ;调归一化子程序RETXCTAB: MOV DPTR,#TAB ;共阴极段码表首址入DPTRMOV R2,#04H ;查找4个段码XCT: MOV A,R0 ;BCD码入AMOVC A,A+DPTR ;查找相应的段码MOV Rl,A ;段码入显示缓冲区中INC R0 ;指向下一个显示缓冲区单元INC R1 ;指向下一个发送缓冲区单元DJNZ R2,XCT ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杂工岗位考试题库
- 冶金设备点检员岗位设备原理面试题及解析
- 轨道交通列车司机中级规章制度考试题库含变化
- 2025企业租赁合同模板示例
- 药品生产管理岗位实操考试题及评分标准
- 家庭管家初级岗位面试英语口语面试题及答案
- 药物分析安全知识与应急处理能力测试
- 足疗行业相关法律法规知识测试题
- 磁电工程师职称评定考试复习资料
- 绩效考核主管所需的核心技能与培养
- 解除地质钻探合同书范本
- 碎石临时停车场施工方案
- 招工登记表模板
- 路灯维护方案完整
- 2023年06月天津市便民专线服务中心招考聘用合同制员工笔试题库含答案解析
- 幼儿园绘本教学中师幼互动策略研究 论文
- 培智二年级体育课教案
- 汽车维修保养服务单
- 300MW电气运行规程
- GA/T 1246-2015道路交叉口发光警示柱
- DB37-T 4328-2021 建筑消防设施维护保养技术规程
评论
0/150
提交评论