adc0809模数转换实验只用到74ls373的三个地址,其余地址还能用么

1 系统结构本测温系统由温度传感器电路、信号放大电路、A/D转换电路、单片机系统、温度显示系统构成。其基本工作原理:温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至A/D转换电路,把电压信号转换成数字量送给单片机系统,单片机系统根据显示需要对数字量进行处理,再送温度显示系统进行显示。&2 硬件电路设计&2.1 温度传感器电路 温度传感器采用的是NS公司生产的LM35,他具有很高的工作精度和较宽的线性工作范围,他的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供±1/4℃的常用的室温精度。LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0℃时输出为0 V,每升高1℃,输出电压增加10 mV。其电源供应模式有单电源与正负双电源两种,其接法如图3与图4所示。正负双电源的供电模式可提供负温度的测量,单电源模式在25℃下电流约为50 mA,非常省电。本系统采用的是单电源模式。2.2 信号放大电路由于温度传感器LM35输出的电压范围为0~0.99 V,虽然该电压范围在A/D转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行A/D转换则会导致转换成的数字量太小、精度低。系统中选用通用型放大器μA741对LM35输出的电压信号进行幅度放大,还可对其进行阻抗匹配、波形变换、噪声抑制等处理。系统采取同相输入,电压放大倍数为5倍,电路图如图5所示。&&&&&2.3 A/D转换电路 A/D转换电路选用8位。ADC0809是CMOS单片型逐次逼近式A/D转换器,可处理8路模拟量输入,且有三态输出能力。图5中运算放大器的输出电压V,送入ADC0809的模拟通道IN0。单片机AT89C52控制ADC0809的开始转换、延时等待A/D转换结束以及读出转换好的8位数字量至单片机进行处理。2.4 单片机系统单片机选用的是ATMEL公司的AT89C52,主要完成对A/D转换电路的控制、对转换后的数字量的处理以及对显示模块的控制,并且为ADC0809提供工作时钟。同时AT89C52外接锁存器,对AT89C52的P0口的地址信号进行锁存。74LS373的Q2,Q1,Q0接ADC0809的C,B,A,实现对模拟通道的选择。AT89C52的晶振选择3 MHz,则其ALE引脚的输出频率为0.5 MHz,小于ADC0809的时钟频率最高值640 kHz,正好为其提供工作时钟。其具体如图2所示,单片机的晶振电路及复位电路较简单,图中未给出。2.5 温度显示系统该温度显示系统较为简单,由可编程并行输入输出芯片8255A的A,B,C端口外接3个8段LED显示器来实现。AT89C52的P2.6为8255提供片选信号,74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控制口的地址为BF3FH,BF7FH,BFBFH,BFFFH。AT89C52处理好的温度数据输出至8255,并由AT89C52对8255编程控制其A,B,C端口输出高电平或低电平,以便从8段LED显示器显示实际温度。8段LED显示器选用共阳极,8255的A,B,C端口与8段LED显示器之间接限流电阻,图2中只画出了PA口,PB,PC口的接法类似。3 系统软件设计系统的软件部分用51汇编语言编程,采用模块化结构,主要由A/D转换模块、单片机内部数据处理模块、温度显示模块等3部分构成,便于修改和维护。3.1 A/D转换模块根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方式:程序查询方式,延时方式和中断方式。本系统采用延时方式。延时程序实际上是无条件传送I/O方式,当向A/D转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。A/D为64个时钟周期,因为系统中ADC0809的工作时钟为500 kHz,故A/D转换时间为128 μs,延时时间可大致选择160μs。程序段如下:&为了使采样数据更稳定可靠,系统还采用了8次采样平均值的方法以消除干扰。 3.2 单片机内部数据处理模块系统通过ADC0809转换的数字量是与实际温度成正比的数字量,但系统最后显示的是实际温度值,因此需要对数据进行处理再通过8255输出到LED显示。设所测温度值为T,A/D转换后的数字量为X,则有:VOUT=0.01 V/℃×T℃VOUT为LM35的输出电压,即运放μA741的输入电压,μA741的输出电压用V1表示。因为μA741的放大倍数为5,则有:V1=5×VOUT=0.05×T根据系统设置,温度传感器输出电压0~5 V对应于转换后的数字量0~255,则有: 0.05T/5=X/255可以近似写为: 0.05T/5=X/256这样除以256可通过把被除数右移8位来实现,编程较简单。由此可以得出X和T的关系:T=100×X/256程序段如下:&3.3 温度显示模块 单片机处理好的温度数据通过8255的3个端口输出到3个LED上显示,8255的A,B,C口的工作方式均设置为方式0,输出。编程时只需分别从40H,41H,42H单元取数据送A,B,C口输出即可。&
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于www.baike.com。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:2次
参与编辑人数:2位
最近更新时间: 17:21:00
贡献光荣榜
扫码下载APP毕业设计-基于单片机的智能火灾报警系统毕业论文 - 论文资料-
当前位置:
毕业设计-基于单片机的智能火灾报警系统毕业论文
馆藏:3024
下载此文档
同系列文档
Baidu Button END -->
官方公众微信单片机课件刘_单片机原理及应用_ppt_大学课件预览_高等教育资讯网
单片机原理及应用:单片机课件刘
分类: 格式: 日期:日
概述1,微型计算机的硬件结构2,嵌入式系统的由来,特点和种类3,单片微机的应用特点微型计算机的硬件结构微处理器CPUROM RAM I/O接口数据总线DB控制总线CB地址总线AB输出设备输入设备时钟电路单片微机的应用特点单片微机是早期 Single Chip Microcomputer的直译,它忠实地反映了早期单片微机的形态和本质。随后,按照面向对象、突出控制功能,在片内集成厂许多外围电路及外设接口,突破了传统意义的计算机结构,发展成microcontroller的体系结构,目前国外已普遍称之为微控制器 MCU (Micro Controller Unit)。 鉴于它完全作嵌入式应用,故又称为嵌入式微控制器 (EmbeddedMicrocontroller)。 国内由于单片机一词已约定成俗,仍沿用至今,但应将单片微机的“机”理解成微控制器而不是微计算机。单片微机面对最底层的电子技术应用,从玩具、小家电、工程控制单元到机器人、智能仪表、过程控制、个人信息终端等,面对不同对象,推出适合不同领域要求的单片微机系列。专用单片微机具有低成本,资源有效利用,系统外围电路少,可靠性高,是未来单片微机发展的一个重要方向本课程教学原则本课程的教学原则为:对原理部分以够用为度.将重点放在培养学生应用单片机系统解决实际问题的能力上,同时注重培养学生的自学能力。为此,我们以一个设计性实验开始.并以此贯穿整个教学过程,本课程教学基本做法以任务为教学单元.打破原有教材知识点讲述的顺序和界限,不管硬件结构、指令、编程的先后顺序,将各部分知识分解成一个个知识点,为了一个任务抽取每个部分的不同知识点,加以组合,完成第一个任务就能清楚单片机的开发过程,完成第二、三个任务,就能自己模仿性地编出自己的程序,使得学习过程是一个不断成功地完成任务的过程.当所有任务全部完成后,知识点也就全学完了.对学生的基本要求为保证教学正常进行要求同学:按教师要求认真完成实验任务,并注意总结实验心得。对教师提示的教材内容必须仔细阅读并结合实验加以体会。在此基础上,力争完成教师布置的开发性实验,以提高自己的动手能力。第一次任务----用单片机点亮一只发光二极管 LED(一 )知识点1,MCS_51单片机和最小系统的组成2,指令初步知识 ( 分类,作用及执行过程 )3,编程初步知识 ( 构成,子程序调用 )4,MCS- 51存储器配置5,实验仪器和软件的使用6,堆栈的概念和子程序调用过程(二 ) 重点1,单片机最小系统2,MCS51存储器配置 。3,堆栈的概念和子程序调用过程第一次任务----用单片机点亮一只发光二极管 LED一、实验目的1、了解单片机最小系统。2、了解 DVCC仿真系统使用方法3、掌握编程的初步知识4、初步掌握并行口的使用方法二、实验设备DVCC仿真系统一套、计算机一台。三、实验原理程序控制发光二极管 LED间歇发光四、实验线路Vcc P2.0~P2.3XTAL2ALEXTAL1RST8031P0.7|P0.0P1.0EA PSENVss74LS373VccGQ7D7 || Q0D0GNDEA11~A8VccVpp2764A7~A0D7~D0 CSOE+5V+5V+5V+5VLED388+5V用单片机点亮发光二极管 LED( 最小系统 )803174LS3732764返回ORG 0000HSTART,CLR P1.0CALL DELAYSETB P1.0CALL DELAYSJMP STARTDELAY,MOV R5,#0FFHDELAY1,MOV R4,#0FFHDJNZ R4,$DJNZ R5,DELAY1RET五、参考程序MCS-51单片机组成振荡器和时序电路4K字节程序存储器128字节数据存储器2个 16位定时器 / 计数器8051CPU64K总线扩展控制可编程并行I/O接口可编程全双工串行口外时钟源 外部事件计数外中断内中断控制 并行口 串行通信由 CPU( 运算器、控制器)、存储器( ROM,RAM)和 I/O接口组成。CPUCPU是单片机的核心部件 。 它由运算器和控制器等部件组成 。( 1) 运算器包括算术 /逻辑 ( ALU),累加器 A,暂存寄存器,程序状态寄存器( PSW) 。 运算器的功能是进行算术运算和逻辑运算 。 可以对半字节,单字节等数据进行操作 。 还有一个布尔处理器,用来处理位操作 。( 2) 控制器包括定时控制逻辑电路,指令寄存器 IR,指令译码器 ID程序计数器PC等 。 CPU从存储器中取来的指令,送入指令寄存器,然后由指令译码器译码分析成一种或几种电平信号,这些电平信号与外部时钟脉冲在 CPU定时与控制电路中组合,形成各种按一定时间节拍变化的电平和脉冲,即控制信息,完成相应的指令功能 。MCS-51片外总线结构8051P0数据总线DBP2P1P3高 8位地址总线PSENALE/PROG控制总线CB地址总线AB74LS373 低 8位地址总线RESETEAI/O单片机指令执行过程执行一条指令的过程分为两个阶段:首先,CPU进入取指阶段,从存储器中取出程序计数器 PC所指单元地址内的指令并通过译码后,转入执行指令阶段,在这期间 CPU执行指令指定的操作 。 当执行指令时,CPU自动修改 PC的内容,使之总是保存将要执行的下一条指令的地址 。取指令阶段是由一系列相同的操作组成的,因此,取指阶段的时间总是相同的 。 而执行指令的阶段是由不同的事件顺序组成的,它取决于被执行指令的类型 。 若 CPU主频为 6Mz,即振荡为1/6μs,则一个机器周期为 2μs。 单周期指令是2μs,双周期指令是 4μs,三周期指令是 6μs。程序读取返回MCS-51单片机存储器配置80C51单片微机系列的存储器采用的是哈佛( Har-yard ) 结构,即将程序存储器和数据存储器截然分开,程序存储器和数据存储器各有自已的寻址方式,寻址空间和控制信号。①在物理上设有 4 个存储器空间·程序存储器:片内程序存储器; 片外程序存储器;·数据存储器:片内数据存储器;片外数据存储器。②在逻辑上设有 3 个存储器地址空间·片内,片外统一的 64 KB ( 16位地址线 216B) 程序存储器地址空间;·片内 256 B( 对 80C52为 384B ) 数据存储器地址空间;·片外 64 KB( 16位地址线 216B) 的数据存储器地址空间。图 2-1特殊功能寄存器 SFR共有 21个特殊功能寄存器,分别分散地安排在内部 RAM的 80H~0FFH地址空间。 (括号内为初始化时的值)累加器 ACC,用来存放数据和运算结果。 (00H)寄存器 B,主要用于乘法和除法指令。也可作一般寄存器用。 (00H)程序状态寄存器 PSW,用来存放程序状态信息。 (00H)堆栈指针 SP,用来指示堆栈顶部的地址。 (07H)数据指针 DPTR,用作 16位地址指针。 (0000H)并行 I/O接口 P0~P3等。 (0FFH)工作寄存器区工作寄存器区:这是一个用寄存器直接寻址的区域,指令的数量最多,均为单周期指令,执行的速度最快。其中片内数据随机存取储存器区的 ( 00H~ 1FH),共 32 个单元,是 4 个通用工作寄存器组(表 2 - l ),每个组包含 8 个 8 位寄存器,编号为R0 ~ R7 。表 2 - 1 工作寄存器组图 2-2RS1(PSW.4) RS0 (PSW.3) 组号 地址单元0 0 0 组 00H~ 07H0 1 1 组 08H~ 0FH1 0 2 组 10H~ 17H1 1 3 组 18H~ 1FH爱思软件介绍程序存储器ALT+P片外数据存储器ALT+N 片内数据存储器 ALT+I 位寻址区 ALT+L堆栈区ALT+K工作寄存器及部分特殊寄存器ALT+T文本窗口ALT+ 8MSC51汇编语言的基本概念汇编语言是用助记符来表示指令的一种计算机语言。它由汇编语句组成。其结构为:标号:操作码 操作数;注释标号位于语句开始,由字母和数字组成,它代表该语句的地址。它不是必须的。操作码表示语句的性质,是语句的核心。操作数在操作码之后。后操作数既可以是数据,也可以是地址,且必须满足寻址方式的规定。注释是说明语句的功能。它以,;,开始。系统对其不加以处理。编程初步知识ORG 0000HSTART,CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYSJMP STARTDELAY,MOV R5,#0FFHDELAY1,MOV R4,#0FFHDJNZ R4,$DJNZ R5,DELAY1RETEND顺序结构子程序,为循环结构调用子程序语句循环结构问题:计算一下程序中的延时子程序延时的时间是多少?堆栈与子程序调用过程堆栈中的数据是以,先进后出,的方式处理的,由堆栈指针SP控制。系统复位时 SP=07H运行爱思软件1.ASMORG 0000H0000 START,CLR P1.00002 LCALL DELAY0005 SETB P1.00007 LCALL DELAY000A SJMP START000C DELAY,MOV R5,#0FFH000E DELAY1,MOV R4,#0FFH0010 DJNZ R4,$0012 DJNZ R5,DELAY10014 RET0016 END下一句地址压入堆栈,即(08H)=05H(PCL)(09H)=00H(PCH)(SP)=09H(PC)=000CH调用子程序从栈中弹出返回地址,即(PCL)=05H,(PCH) =00H(PC)=0005H,(SP)=07H子程序返回,执行 0005H句指令初步知识ORG 0000H START,CLR P1.0 ; P1.0置 0C LCALL DELAY ; 调延时子程序 SETB P1.0 ; P1.0置 1C LCALL DELAY ; 调延时子程序000A 80F4 SJMP START ; 跳转止 START000C 7DFF DELAY,MOV R5,#0FFH ; 将 FFH送 R5000E 7CFF DELAY1,MOV R4,#0FFH ; 将 FFH送 R40010 DCFE DJNZ R4,$ ; R4减 1不为 0,跳转止本句0012 DDFA DJNZ R5,DELAY1 ; R5减 1不为 0,跳转止 DELAY10014 22 RET ; 返回END ; 程序结束伪指令,汇编起始指令:表示程序存放的起始地址对应指令码存放的地址源程序助记符标号:标明指令的地址机器码,目标程序注释指令分类1,数据传送类指令,MOV2,位操作类指令,SETB,CLR3,控制转移类指令,DJNZ,LCALL、SJMP,RET4,逻辑操作类指令:5,算术运算类指令:作业一1,简述子程序调用过程。2,已知 (SP)=25H,(PC)=2345H,(24H)=12H,(25H)34H,(26H)=56H,问执行 RET后,(SP)=? (PC)=?3,已知 (SP)=25H,(PC)=2345H,标号 LABEL所在的地址 3456H,问执行 LCALL LABEL后,堆栈指针和堆栈内容发生了什么变化?(PC)=?4,设晶振频率为 12MHz,求下边程序延时多长时间。 MOV R1,#20HAGAIN,MOV R2,#60HDELAY,DJNZ R2,DELAYDJNZ R1,AGAINRET第二次任务--用单片机实现按键控制 LED灯亮知识点1,并行口 (Po,P1,P2,P3)的功能2,片内存储器的构成3,数据传送,逻辑运算和位操作指令4,进一步了解 堆栈的使用方法第二次任务--用单片机实现按键控制 LED灯亮一、实验目的1、进一步掌握并行口的使用方法。2、熟悉片内 RAM的构成3、进一步学习指令系统4,学习 DVCC单片机存储器的操作方法二、实验设备DVCC仿真系统一套、计算机一台。三、实验原理1,由 P3.3控制 4个 LED按 16进制方式发光。2、将 20H中压缩 BCD码拆成两个单字节 BCD码,依次存放 21H,22H。四、实验线路P1.0P1.1P1.2P1.3P1.4P1.6P1.7P3.3+5V+5VLED0~LED71A1 1Y11A2 1Y21A3 1Y31A4 1Y42A1 2Y12A2 2Y22A3 2Y32A4 2Y474LS2401G2GR0~R7K74LS240八线缓冲器 /驱动器输入 输出G A YL L HL H LH X 高阻 返回五、程序清单ORG 0000hHA1S:MOV A,#00HHA1S1:JB P3.3,HA1S1MOV R2,#20HLCALL DELAYJB P3.3,HA1S1HA1S2:JNB P3.3,HA1S2MOV R2,#20HLCALL DELAYJNB P3.3,HA1S2INC APUSH ACCCPL AMOV P1,APOP ACCAJMP HA1S1DELAY,PUSH R2DELAY1,PUSH R2DELAY2,PUSH R2DELAY3,DJNZ R2,DELAY3POP R2DJNZ R2,DELAY2POP R2DJNZ R2,DELAY1POP R2DJNZ R2,DELAYRETENDMOV A,P1RL AMOV P1,AMOV P1,#0FEH改为改为爱思软件2_1.ASM程序解析ORG 0000hHA1S,MOV A,#00H; A赋初值 00HHA1S1:JB P3.3,HA1S1; P3.3为 1则等待MOV R2,#20H; R2为循环量初值LCALL DELAY; 调延时子程序JB P3.3,HA1S1; P3.3为 1则返回,判断是否键抖动HA1S2:JNB P3.3,HA1S2; 不是抖动,P3.3不为 1则等待MOV R2,#20HLCALL DELAYJNB P3.3,HA1S2; P3.3不为 1则返回INC A ; P3.3从 0变为 1,又从 1变为 0,即开关来回拨动了一次PUSH ACCCPL AMOV P1,APOP ACCAJMP HA1S1; 返回 HA1S1A=01H压入堆栈A=0FEHP1=0FEH,亮一个灯栈顶内容 01H弹出赋给 A=01H2 压入堆栈DHD,亮二个灯栈顶内容 02 弹出赋给 23 压入堆栈=0 C=0 C,亮一个灯栈顶内容 03 弹出赋给 3如果不用堆栈,就必须指定一个地址存放 A,在大程序中,这个地址可能存放重要数据,而生成整个程序出错。改写这部分程序,就可改变开关操作时 LED的变化规律并行口 I/O的功能MCS-51有 4 个双向的 8 位并行 I/O口 P0~P3,在无片外存储器的系统中,这 4 个 I/O口的每一位都可作为准双向通用 I/O口使用 。在具有片外存储器的系统中,P2口作为地址的高八位,P0口作为地址的低八位和双向数据总线 。1,P0口可作为通用 I/O口使用,但实际应用时通常作为地址 /数据总线,即低 8 位地址与数据线分时使用 P0口,此时 P0口为真正的双向口 。 若作为通用 I/O口,在输入数据时,要先向锁存器写 1,否则,若此前该口曾输出锁存过 0,则输入的 1 就 无法正确的读入 。 因此,称 P0为准双向口 。2,P1口每一位都可以作为可编程输入或输出线,也是准双向口,在输入数据时,要先向锁存器写 1。3,P2口也是准双向口,当系统中有片外存储器时,P2口用于输出高八位地址。在 8031中 P2口一般只作为地址总线使用。4,P3口为双功能口,作为第一功能时,作用同 P1口。第二功能以后再讲。返回片内数据存储器片内数据数据存储器是最灵活的地址空间它在物理上又分成两个独立的功能不同的区。·片内数据随机存取储存器区:对 80C51型单片微机,为地址空间的低 128 B ; 对 80C52 型单片微机,为地址空间的 0 ~ 256B。·特殊功能寄存器 SFR 区:地址空间的高 128B 。片内 RAM片内数据随机存取储存器区 ( 工作寄存器区)在片内数据随机存取储存器区,根据不同的寻址方式又可分为以下几个区域:①工作寄存器区:这是一个用寄存器直接寻址的区域,指令的数量最多,均为单周期指令,执行的速度最快。从图中可知,其中片内数据随机存取储存器区的 ( 00H~ 1FH),共 32 个单元,是 4 个通用工作寄存器组,每个组包含 8 个 8 位寄存器,编号为 R0 ~ R7 。片内 RAMRS1(PSW.4) RS0 (PSW.3) 组号 地址单元0 0 0 组 00H~ 07H0 1 1 组 08H~ 0FH1 0 2 组 10H~ 17H1 1 3 组 18H~ 1FH片内数据随机存取储存器区( 位寻址区及字节寻址区)②位寻址区:从片内数据随机存取储存器区的 20H~ 2FH)的 16 个字节单元,共包含 128 位,是可位寻址的随机存取储存器区,其中每一位都可视作软件触发器,由位操作指令处理。这 16 个字节单元,既可进行字节寻址,又可位寻址。字节地址与位地址之间的关系见 表 2 - 1 。③字节寻址区:从片内数据随机存取储存器区的 48 ~ 127( 30H~ 7FH),共 80 个字节单元,可以采用直接字节寻址的方法访问。位地址和字节地址的区别:位地址只能用位操作指令 。位地址中只能存一位数,取值范围只有 0,1两个数,字节地址能存 8位数,取值范围是 00H~0FFH共 256个数表 2-1片内数据随机存取储存器区( 堆栈区及堆栈指示器)④堆栈区及堆栈指示器:堆栈是在片内数据随机存取储存器区中,数据先进后出或后进先出的区域。堆栈指示器(堆栈指针) SP存放当前的堆栈栈顶所指存储单元地址的一个 8位寄存器。系统复位时 (SP)=07H,也可用指令MOV SP,#data(data一般为 30H~7FH)。堆栈共有两种操作:进栈和出栈,不论是数据进栈还是数据出栈,都是对栈顶单元进行的,即对栈顶单元的写和读操作。进栈时 SP的内容是增加的;出栈时 SP的内容是减少的。堆栈是为子程序调用和中断操作而设立的其具体功能有两个:保护断点和保护现场。堆栈的概念和使用二DE2,PUSH R2DE3,DJNZ R2,DE3POP R2DJNZ R2,DE2RET设 R2=04H,SP=07H(SP)=08H(08H)=04HR2从 04H开始减 1循环 4次栈顶弹出给 R2(R2)=04H(SP)=07HR2减 1=03H转移到 DE2(SP)=08H(08H)=03H(SP)=08H(08H)=02H(SP)=08H(08H)=01HR2从 03H开始减 1循环 3次R2从 02H开始减 1循环 2次R2从 01H开始减 1循环 1次栈顶弹出给 R2(R2)=03H(SP)=07H栈顶弹出给 R2(R2)=02H(SP)=07H栈顶弹出给 R2(R2)=01H(SP)=07HR2减 1=02H转移到 DE2R2减 1=01H转移到 DE2R2减 1=00H循环结束共循环 4+3+2+1=10次若不用堆栈技术,则程序将十分冗长子程序返回2_1.asm指令系统 -逻辑操作指令逻辑操作指令:( A) =0AAH ( C) =1CLR A,清零CPL A,求反AND A,#38H,相与OR A,#38H,相或XRL A,#38H,相异或RL A,循环左移RRL A,循环右移RRC A,带进位右移RLC A,带进位左移1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 11 0 1 0 1 0 1 0 0 1 0 1 0 1 0 11 0 1 0 1 0 1 00 1 0 1 0 1 0 11C11 0 1 0 1 0 1 01 1 0 1 0 1 0 11C0指令系统 -数据传送指令堆栈操作指令进栈 PUSH半字节交换指令SWAP A (A)=35H → (A)=53H字节交换指令XCH A,Rn出栈 POPSP 07H XXB88HSP 08H07H XXA88H88HPUSH APOP BSP 07H XXA88HXCHD A,@RiAR020H56H20H78HAR020H58H20H76H指令系统 -位操作指令指令位操作指令只限于可位寻址的位(位地址记为bit),它的累加器是 PSW.7(CY),记为 C。位置位指令CLR bit,CLR C,SETB bit,SETB C位控制转移指令JB bit,rel,JNB bit,rel,JC,rel,JNC,rel位传送指令MOV C,bit,MOV bit,C位运算指令 (ANL,ORL,CPL)ANL C,bitANL C,\bit( 注意 bit内的值并不变化)例,(C)=1,(20H)=1,ANL C,\20H后,(C)=0,(20H)=1注意:位运算必须通过 C进行计算,且运算结果在 C中。并字程序( (20H)=95H,(21H)=78H,合并为 98H存入 22H)屏蔽 21H的高字节(与 0FH相与)两字节的内容合并(相或)存入 22H屏蔽 20H的低字节(与 F0H相与)ORG 0000HMOV A,20H;( 20H) → AANL A,#0F0H; 屏蔽高四位 → AMOV B,A; 暂存 BMOV A,21H ;( 21H) → AANL A,#0FH ; 屏蔽低四位 → AORL A,B; 两数相或 → AMOV 22H,A ;( A) → 22HMSC512_2.ASM拆字程序(20H)=95H,拆为 09H,05H存入 21H,22H。 95为压缩 BCD码,09,05称单字节 BCD码。这个程序以后经常使用。ORG 0000HPUSH 20H ; 20H的内容入堆栈MOV A,20H ;( 20H) → ASWAP A ; A的高低字节对换ANL A,#0FH; 屏蔽高四位 → AMOV 21H,A ;( A) → 21HPOP A ; 栈顶的内容出栈 → AANL A,#0FH ; 屏蔽低四位 → AMOV 22H,A;( A) → 22H屏蔽高字节并存入 21H屏蔽高字节并存入 22H将 20H压入堆栈交换 20H高低字节出栈给 AMSC512_3.ASM返回作业二1、简述 8031片内数据存储器的构成。2,位地址和字节地址有何区别?位地址 4EH在内存中什么位置? MOV C,30H与 MOV A,30H有何区别?3,P48 74,P48 11( 2)5,P48 14 题 5提示:置 P1口低四位为输入方式将 P1口数据读入 A取反高低字节交换保留高四位,并使低四位全 1输出到 P1口结束题 4提示:位运算必须通过 C进行计算,且运算结果在 C中。第三次任务--访问外部数据存储器及循环程序编制知识点1,程序存储器和数据存储器的连接,编址和区别2,数据存储器构成和访问方法3,指令的寻址方式4,DPTR,Ri作为指针的编程方法5,循环程序的编制第三次任务--访问外部数据存储器及循环程序编制一、实验目的1,程序存储器和数据存储器的连接和编址2,访问外部数据存储器的方法3,循环程序的编制二,实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、在外部数据存储器 FH和片内 RAM 30H ~3FH分别存放数据 00H,01H…… 0FH。2、在片内数据存储器 20H~23H中压缩 BCD码拆成单字节BCD码依次存放到 28H~2FH中。四、实验电路P2.6P2.5P2.4P2.3P2.2P2.1P2.08031ALEP0WRPSENRDCEA12A11A10A9A82764(1)A7|A0D7~D0 OECEA12A11A10A9A82764(2)A7|A0D7~D0 OECEA12A11A10A9A86264(1)A7|A0 WRD7~D0 OECEA12A11A10A9A86264(1)A7|A0 WRD7~D0 OE74LS373Q7G |Q0D7~D04000H~5FFFH4000H~5FFFH2000H~3FFFH2000H~3FFFH实验电路中若将 P2.6P2.5改为P2.7P2.6则相应程序存储器和数据存储器的地址范围是多少?P2.7P2.6P2.5X 1 0P2.7P2.6P2.5X 0 1P2.7P2.6P2.51 0 X8000H9 FFH0 1 X4000H5FFFH五、实验程序一ORG 0000HMOV P2,#01HMOV R2,#0FHMOV R0,#30HCLR ACLEAR1:MOVX @R0,AMOV @R0,AINC R0INC ADJNZ R2,CLEAR1SJMP $ MSC513_11.ASM 3_12.ASM对数据指针所指的单元进行操作数据指针赋初值修改数据指针ORG 0000HMOV DPTR,#0130HMOV R2,#0FHMOV R0,#30HCLR ACLEAR1:MOVX @DPTR,AMOV @R0,AINC DPTRINC R0INC ADJNZ R2,CLEAR1SJMP $五、实验程序二ORG 0000HMOV R0,#20HMOV R1,#28HMOV R7,#04HLOOP:LCALL CZINC R0INC R1DJNZ R7,LOOPSJMP $CZ,MOV A,@R0PUSH ASWAP AANL A,#0FHMOV @R1,AINC R1POP AANL A,#0FHMOV @R1,ARET对数据指针所指的单元进行操作数据指针赋初值修改数据指针应用系统地址译码方法为了唯一的选中片外某一存储器单元或输入/输出端口,需要进行2 种选择。一是必须选择存储器芯片或输入/输出接口芯片,称为&片选 &(芯片地址或设备地址 ),二是必须进一步选择己选中的芯片中的某一个存储单元或输入/输出端口,称为 &字选 &(子地址 ) 。&片选 & 保证每次操作只选中一片存储器或输入/输出接口芯片。常用的方法有四种 ∶ &线选法 &,&地址译码法 &,可编程器件PAL/GAL,输入/输出引脚。1、线选法-通过 80C51地址总线产生片选线2、地址译码法 ---通常使用的译码器有:74HC138 3/8 译码器。74LS139 2/4 译码器74LS154 4/16 译码器线选法地址译码法片外数据存储器与片外程序存储器外部 ROM 外部 RAM片外程序存储器和片外数据存储器共处同一地址空间,却不会发生总线冲突。这是因为对片外数据存储器进行读写操作的指令是 MOVX A,@DPTP(读 )MOVX @DPTR,A(写 )由于 MOVX指令的出现,操作时序与读片外程序存储器不同。寻址方式 -立即寻址指令由操作码和操作数组成。操作数指明参与操作的数或数所在的地址;对于相对转移指令,操作数则要指出下一条要执行指令的地址。寻址方式就是寻找操作数地址或指令地址的方式。操作数从指令直接取得,即从程序存储器取得。MOV A,#45H 机器码,74 45程序存储器PCPC+17445A45寻址方式 -直接寻址由指令直接给出参加操作的数的地址。如 MOV A,45H E545程序存储器PCPC+1E545A2F片内数据存储器45H 2F由指令指出某一个寄存器的内容为操作数,对选定工作寄存器区中的 R0~R7,累加器A,B,DPTR及进位 CY中的数进行操作。MOV A,R3 EB( )寻址方式 -寄存器寻址011表示 R3程序存储器PC A2F片内数据存储器03HR32F由指令指出某一个寄存器的内容为操作数的地址,由该地址所指定的存储单元内容作为操作数。可以作为寄存器间接寻址的寄存器有 R0,R1,SP及 DPTR。MOV A,@R0 寻址方式 -寄存器间接寻址R0程序存储器PC A3A片内数据存储器00HR0 2F2FH 3A以程序计数器 PC或数据指针 DPTR作为基址寄存器,累加器 A作为变址寄存器,操作数的地址为 PC( DPTR) +A。MOVC A,@A+DPTR 93寻址方式 -变址寻址程序存储器PC 93A47SFRDPHDPL 0020+2000H47H2047H 5C5C以当前程序计数器 PC的内容为基值,加上指令给出的一字节补码数(偏移量)形成 PC值的寻址方式。相对寻址只用于修改 PC之值,故主要用于实现程序的分枝转移 。JC 18H 4016寻址方式 -相对寻址程序存储器1000H1001H1002H40 +1018H16读入 JC 18H后PC=1012H执行 JC 18H后PC=1018H寻址方式小结方式 利用的变量 使用的空间立即寻址 程序存储器寄存器寻址R0~R7,A,B,CY、DPTR直接寻址 内部 RAM( 00~7FH) 和SFR及位空间寄存器间接寻址@R0,@R1,SP 内部 RAM( MOV)@R0,@R1、@DPTR外部 RAM( MOVX)变址寻址 DPTR+A,PC+A 程序存储器相对寻址 PC+偏移量 程序存储器位寻址 可位寻址区及部分 SFR各位外部数据存贮器外部数据存贮器又称外部数据 RAM,其最大容量可达 64K字节 。 它的功能与内部数据 RAM基本相同,但它不能进行堆栈操作 。当 8031单片机同时外接有程序存贮器和程序存贮器时,两者的区别在于:前者只有读操作无写操作,且写操作信号由引脚 PSEN直接提供;后者则有读,写操作,且由引脚信号 RD和 WR选通读写操作 。对片内 RAM或片外 RAM操作的区别在于:前者无读写信号,后者有读写信号 ( RD,WR) 。存贮器的数据操作( 1) 程序存贮器只有读操作,用指令 MOVC。 除由 PC直接寻址,还可以用 PC或DPTR作变址寻址 。如,MOVC A,@A+DPTRMOVC A,@A+PC( 2) 外部数据 RAM可进行读写操作,用指令 MOVX。 用 DPTR作寄存器间接寻址 。如 MOVX A,@DPTR;也可用 R0或 R1作寄存器间接寻址,如:MOV P2,#20HMOV R0,#30HMOVX @R1,A; A内的数据送到外部数据 RAM中 2030H单元 。存贮器的数据操作( 3) 内部数据 RAM可进行读写操作,用指令 MOV。 接直接字节地址寻址,如 MOV 35H,#64H;也可用 R0或 R1作寄存器间接寻址,如:MOV R0,#40HMOV A,@R0;将内部数据 RAM中 40H单元的内容 ( 40H) 送到 A。( 4) 特殊功能寄存器可进行读写操作。用指令 MOV。 只能用直接寻址方式。程序举例(50H)=40H,执行下列程序后,以下各寄存器内容是什么 。(R0)= (40H)= (A)= (41H)= (42H)=MOV A,50HMOV R0,AMOV A,#00HMOV @R0,AMOV A,#3BHMOV 41H,AMOV 42H,41H(50H) → A (A)= (50H) =40H(A )→ R0 (R0)= (A) =40H00H → A (A) =00H(A) → (R0)=(40H) (40H)= (A) =00H3BH → A (A)= 3BH(A) → 41H (41H)= (A) =3BH(41H) → (42) (42H)= (41H) =3BH40H 00H 3BH 3BH 3BH循环程序循环程序一般包括如下四个部分:1、置循环初值:如设置地址指针,设置工作寄存器,设置循环次数等。2、循环体:循环结构的基本部分。3、循环控制:包括修改指针、修改控制变量和判断循环是否结束还是继续。修改指针和控制变量是为下一次循环判断作准备,当符合结束条件时结束循环。4、结束:存放结果或作其它处理。结束置循环初值循环体修改指针循环结束结束部分开始FIND,MOV SP,#60HMOV R0,#10HMOV R1,#00HMOV DPTR,#7000HFIND1:MOVX A,@DPTRCJNE A,#00H,FIND2INC R1FIND2:INC DPTRDJNZ R0,FIND1置循环初值循环体循环控制返回修改指针修改控制变量 R0和判断循环是否结束连续拆字程序将 20H~2FH的内容拆到 30H开始以后的单元中将 R0所指地址中的内容拆字并存入 R0所指地址中将指针 R0指向 20H将指针 R1指向 30HR7为计数器等于 0FHR0,R1加 1R7-1=0?结束ORG 0000HMOV R0,#20HMOV R1,#30HMOV R7,#0FHLOOP:LCALL CZINC R0INC R1DJNZ R7,LOOPSJMP $CZ,MOV A,@R0PUSH ASWAP AANL A,#0FHMOV @R1,AINC R1POP AANL A,#0FHMOV @R1,ARET初始化主程序子程序MSC513_2.ASM作业三1,P120 12、指出下列指令中画线的操作数的寻址方式。MOV R0,#60H; MOV A,30H; MOVA,@R1;MOV @R1,A ; MOVC A,@A+DPTR; SJMPNEXT;MOV C,30H3,P49 13( 注意:一查到有 0AAH就不查了)4,P120 2第四次任务--算术运算指令和状态寄存器 PSW(一 )知识点1,学习算术运算指令及 PSW的变化2,进一步掌握常用程序的编制方法3,进一步掌握爱思软件的使用方法(二 ) 重点1,算术运算指令及 PSW的变化2,典型算术运算编制和数制转换程序第四次任务--算术运算指令和状态寄存器 PSW一、实验目的1,学习算术运算指令及 PSW的变化2,进一步掌握常用程序的编制方法3,进一步掌握爱思软件的使用方法二、实验设备计算机一台、爱思软件。三、实验内容1、运行给定程序,观察并记录程序执行过程中相应寄存器内容的变化,尤其是状态寄存器 PSW。2、数制转换3、多字节 BCD码的运算四、实验程序程序一求 y=a2-b的子程序。入口,a=200 存放在 R2中,b=88存放在 R3中。出口:结果放入 R6和 R7中 。ORG 0000H PSW= (A)=MOV A,R2; PSW= (A)=MOV B,A; (B)=MUL AB; PSW= (A)= (B)=CLR C ; PSW=SUBB A,R3; PSW= (A)=MOV R7,A ; (R7)=MOV A,B ; (B)=MOV A,#00H; PSW= (A)=MOV R6,A; (R6)=RET程序二将 A中的 16进制数转换为 BCD码 。百位数存 R3中,十位和个位放在 A中。ORG 0000H PSW= (B)=MOV B,#100; PSW= (B)=DIV AB; PSW= (A)= (B)=MOV R3,A; (R3)=MOV A,#10; (A)=XCH A,B; PSW= (A)= (B)=DIV AB; PSW= (A)= (B)=SWAP A; (A)= (B)=ADD A,B; PSW= (A)= (B)=SJMP $MCS_515_1.ASM5_2.ASM四、实验程序程序三多字节 BCD码减法子程序。(21H)(20H)=2000H(23H)(22H)=1098H入口:被减数低字节地址在 R1中,减数低字节地址在 R0中,字节数在 R2中;出口:差的低字节地址在 R0中,字节数在 R3中。 07H位为符号位,0正 1负。SUBBCD,PUSH PSWCLR CCLR 07HMOV R3,#0SUBBCD1:MOV A,#9AHSUBB A,@R0ADD A,@R1DA AMOV @R0,AINC R0INC R3CPL ADJNZ R2,SUBBCD1JNC SUBBCD2SETB 07HSUBBCD2,POP PSWRETORG 0000HMAIN,MOV R1,#20HMOV R0,#22HMOV R2,#02HACALL SUBBCDSJMP $MCS_515_3.ASM算术运算指令ADD:加法ADDC,带进位加法INC,加 1DA A,十进制调整,必须在加法指令后DEC,减 1SUBB,带借位减法MUL AB,A*B,结果高八位存 B,低八位存 ADIV AB,A/B,结果商存 A,余数存 B。状态寄存器 PSW( 1) CY,进(借)位标志。两数相加(减),若发生进(借)位,则 CY置 1。例,78H+97H( 10111)( 2) AC,半进位标志。两数相加(减),若发生半进(借)位,则 AC置 1 。 例,57H+3AH( 11010)( 3) F0,用户标志位,由编程人员决定是否采用。( 4) RS1,RS0,工作寄存器组选择位。( 5) OV,溢出标志位。溢出表示执行带符号加减法指令时,运算结果超出了 (-128~+127),或 DIV AB时,除数为 0,或 MUL AB的结果超过 255(即结果要从 A,B两个寄存器读取 )。逻辑关系是OV=C6 C7( Ci表示 i位向 i+1有进位)( 6) P,奇偶校验位:它用来表示 A中二进制数位,1”的个数的奇偶性。若为奇数,则 P=1,否则为 0。例,(A)=78H(),显然 1的个数为偶数,所以 P=0。PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0CY AC F0 RS1 RS0 OV - P图 5-1返回BCD码加减法BCD码加法中常用指令是 DA A若 (A3~0)&9或 (AC)=1则 (A3~0)+6→ (A3~0)394881687++18246C8628++若 (A7~4)&9或 (CY)=1则 (A7~4)+6→ (A7~4)938619679++1135467B681++MOV A,#35HADD A,#46HDA ABCD码减法不能用 SUBB指令,一般采用先求减数的 100的补码,再加被减数。 82-35=4719A356582E7647―++舍弃CLR CMOV A,#9AHSUBB A,#35HADD A,#82HDA ADA A必须在 ADD,ADDC后面,INC指令不影响任何标志位19+6+1=25MOV A,#19H; (A)=19HADD A,#06H; (A)=1FHINC A ; (A)=20H CY不变DA A ; 不符合加 6的两个条件(A)=20H作业四2,P48 93,P48 101,设 (R1)=42H,(42H)=80H,(A)=48H,(50H)=08H,(PSW)=00H。 执行下列程序后,以下各寄存器内容是什么MOV A,@R1 执行完毕后,(R1)= (42H)= (A)=MOV @R1,50H (50H)=SUBB A,@R1 CY= AC= OV=MOV 50H,A第五次任务--多分支程序(一 )知识点1,学习多分支结构2,进一步掌握常用程序的编制方法3,偏移量的计算(二 ) 重点1,多分支结构2,偏移量的计算第五次任务--多分支(散转)程序一、实验目的1,学习多分支结构2,进一步掌握常用程序的编制方法3,掌握偏移的计算二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、若 A=0,则( 20H) =00H; A为正数,则( 20H) =0FFH; A为负数,则( 20H) =01H。2、编写多分支(散转)程序,根据片内 20H所存键盘的键值执行相应的程序。当 (20H)=00H时,循环显示,0” ; (20H)=01H时,循环显示,1” ; (20H)=02H时,循环显示,2” ; (20H)=03H时,循环显示,3” 。四、实验框图开始(20H) → AA+散转首地址0字循环 1字循环 2字循环 3字循环五、实验程序ORG 0250H0250 MJUP,MOV A,20H0252 MOV DPTR,#TABADDR0255 RL A0256 JMP @A+DPTR0257 TABADDR:SJMP DISP00259 SJMP DISP1025B SJMP DISP2025D SJMP DISP3025F DISP0:MOV 20H,#0C0H0261 LJMP MJUP10264 DISP1:MOV 20H,#0F9H0266 LJMP MJUP10269 DISP2:MOV 20H,#0A4H026B LJMP MJUP1026E DISP3:MOV 20H,#0B0H0270 MJUP1:将 20H中的字形码循环显示必须相对应,散转表中为双字节指令,则A乘 2;若为三字节指令 LJMP DISP0,则 A乘 3MCS_514_1.ASM发光二极管 LEDabcdef gdp0FCH60H0F2H0DAH66H……a b dp共阴极 LED8EH要使七段 LED管显示字符,必须输入相应字符的字形码。分支结构程序的编制A=0语句组 1 语句组 2语句组 3JZ GOMOV 20H,#0FFHSJMP EENDGO:MOV 20H,#00HEEND,ENDNY不可缺少A=0语句组 1 语句组 2语句组 3JNZ GOMOV 20H,#0FFHSJMP EENDGO:MOV 20H,#00HEEND,ENDNY不可缺少分支程序主要是用条件转移指令来实现的,因此分支程序的关键是如何选择判断分支条件。通常,CPU将标志位作为判断的条件。分支程序的设计要点是:1、必须先建立可供条件转移指令测试的条件,可以通过算术运算和逻辑运算等影响标志位的指令,设定标志位或累加器 A或片内 RAM某位的结果状态。如采用 JC指令,则必须事先执行影响 CY的指令。2、正确选用条件转移指令,并注意在完成某分支后,必须使用 SJMP指令转出。双向分支程序ZZ,JNZ NZMOV 20H,#00HSJMP EENDNZ:CJNZ A,#80H,ZZSJMP FUSUK1,JC ZSUFUSU:MOV 20H,#01HSJMP EENDZSU,MOV 20H,#0FFHEEND,END 三处红色语句不可缺少例:若 A=0,则( 20H) =00HA为正数,则( 20H) =0FFHA为负数,则( 20H) =01H执行 CJNZ指令时,若 (A)&80H,则CY=0;若 (A)&80H,则 CY=1返回MCS_51 4_2.ASMA=80H语句组 1语句组 2语句组 3NYC=1语句组 4A&80HA&80HA=00H NY多分支(散转)程序设计多分支的主要方法是采用分支表法关键指令,JMP @A+DPTR 73相对转移 SJMP rel 80XX绝对转移 LJMP addr 02XXXX程序存储器0256H0257H0258H0259H025AH025BH025CH025DH025EH738006JMP @A+DPTRSJMP DISP0SJMP DISP1SJMP DISP2SJMP DISP38080800A0E12025F DISP0,MOV 20H,#0C0H0262 LJMP MJUP10265 DISP1,MOV 20H,#0F9H0268 LJMP MJUP1026B DISP2,MOV 20H,#0A4H026E LJMP MJUP10271 DISP3,MOV 20H,#0B0H0274 MJUP1:+当前 PC rel新 PC0257H+A DPTR新 PC00H0257H02H0259H04025BH0259H 06H025FH025BH 0AH0265H02 0274返回偏移的计算及转移范围80F7200020012002 XXrel(80H~0FFH)PC减小当前 PC=2002H新 PC=2002+FFF7=1FF9HXX1FF9H2002 XXrel(00H~7FH)PC增大当前 PC=2002H新 PC=2002+07=2009H2009 XXrel是相对地址是一个有符号的偏移量,其范围是 -128~+127,以补码的形式存放相对转移与绝对转移页面:高 5位相同的地址称为同一页面。SJMP rel:转移范围是 -128~+127,与页面无关。AJMP addr11转移范围是本页面。LJMP addr16转移范围是 64K空间的任意单元。如果超过转移范围,系统将提示:jump out of range(条件转移指令 JC,JNC,JZ,JNZ等 )Jnmp out of page(无条件转移指令 )00000B11111B00000B0800H07FFH0000H11111B0FFFH2K2K010110378H0124H00011B0MCS51作业五一填空1、已知指令 AJMP addr11的机器码是 41FFH,指令所在的地址为 0810H,转移指令的目的地址为 。2、已知指令 SJMP 70H所在的地址为 0100H,转移指令的目的地址为 。3、已知指令 SJMP A0H所在的地址为 0100H,求转移指令的目的地址为 。4、求指令 H,SJMP H的机器码为 80――。二,Y=2X X&02 X=0 (-28&X&63)0 X&0设 X存放在 R1中,Y送 R2。题三提示,1、先判 A=0,再判 ACC.7=12、乘 2用移位指令第六次任务--串行口与查表程序(一)、知识点1,单片机串行口的使用方法2,串并转换的方法3,查表程序的编制方法(二)、重点1,查表程序的编制方法2,单片机串行口的使用方法第六次任务--串行口与查表程序一、实验目的1,初步了解单片机串行口的使用方法2,初步了解串并转换的方法3,掌握查表程序的编制方法二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1,20H中为( 00~0FH) 中的一个数,在 LED上相应显示 0~9和 A~F。2,查表求 0~9的平方。3、查表求 0~7的阶乘。四、实验线路返回五、实验程序程序一ORG 0000HSTART,MOV A,20HMOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AMOV R7,#07HLOOP,DJNZ R7,LOOPLCALL DELAYSJMP STARTTAB:DB 0FCH,60H,0DAH,0F2HDB 66H,0B6H,0BEH,0E0HDB 0FEH,0F6H,0EEH,3EHDB 9CH,7AH,9EH,8EHDELAY,。。。。RETEND五、实验程序查表求 0~9的平方ORG 0000H2000H START:MOV A,20H2002H MOV DPTR,#TAB2005H MOVC A,@A+DPTR2006H TAB:DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81HORG 0000H2000H MAIN,MOV A,20H2002H ADD A,#02H2004H MOVC A,@A+PC2005H SJMP $2007H TAB:DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81HDPTR20H04H 2006H+200AH 16HPC20H04H2005H+200BH 16H+02H06HMCS_51 6_1.ASM6_2.ASMTAB 0007PC 0005偏移量 2-串行口与串并转换串行,数据一位一位地输入输出。波特率,每秒钟传输的位数。两个 串行口数据缓冲器 通过特殊功能寄存器 SBUF来访问。写入SBUF的数据储存在发送缓冲器,用于串行发送;从 SBUF读出的数据来自接收缓冲器。两个缓冲器共用 SBUF的地址。8031的引脚 P3.0的第二功能为串行数据接收端( RXD); 引脚P3.1的第二功能为串行数据发送端( TXD) 在本实验中串行数据通过 RXD输出,TXD输出移位时钟作为移脉冲输出端。当执行指令 MOV SBUF,A一个数据写入串行口数据缓冲器 SBUF,就开始发送。在此期间发送控制器 TXD送出移位信号,使发送移位寄存器的内容右移一位。直到最高位数字移出后,停止发送数据和移位脉冲。波特率为 fosc/12(fosc为单片机振荡频率)移位寄存器 74LS164实现 串并转换查表程序MOVC A,@A+DPTR,表头可在 64K范围任何位置。MOVC @A+PC,由于偏移量 (-128~+127),因此表头必须在范围之内。偏移量等于表头地址减该指令后面指令的地址。查表就是根据变量 x,在表格中查找 y,使 y=f(x),这 f(x)可以是任意函数。因此查表程序用途极为广泛,如打印机打印,数据补偿、计算、转换等。如求三角函数;温度测量的非线性补偿。具有程序简单、执行速度快等优点。返回伪指令伪指令是非执行指令,它只是在对源程序进行汇编的过程中起某种控制作用。伪指令汇编后不产生目标代码,不影响程序的执行,故称伪指令。主要便于程序阅读、编写和修改。1,ORG 用来设定程序或数据存储区的起始地址。一个源程序可以多次 ORG指令,但所规定的地址必须是从小到大,不允许有重叠。2,END 表示源程序结束。在 END后所写的指令,汇编程序都不予处理。一个程序只能有一个 END指令,放在程序末尾。3,DB 从指定地址开始,定义若干字节数据或 ASCII码字符,常用于定义数据常数表。4,DW 从指定地址开始,定义若干字节数据,常用于定义地址表。一个字占两个存储单元返回习题课1,可位寻址区的地址范围是 ~,位地址为 23H是字节地址为的第 位 。2.(PSW)= 00H,若设定寄存器 R0~R7工作在 2区,则 (PSW)= B。3.若 P1口的 P1.3接地,其余均接高电平,执行下列指令后 (A)= 。MOV P1,#0FFHMOV A,P14.(A)=0EFH,(B)=08H,(PSW)=B,执行 MUL AB 后,(A)=,(PSW)= B。5,将下列指令的寻址方式填在后面MOV A,R0XCH A,@R1POP R06,设 (SP)= 07H,指令 ACALL DIS指令地址为 2030H,执行这个指令后,(SP)=,(08H)= 。7,HERE,SJMP HERE的机器码为 808,标号为 LABEL的语句首地址 2010H,则 AJMP LABEL的机器码为 。9,在单片机扩展系统中三总线为,,。74LS373常作为 器 。写出下列指令:1,将累加器 A的最高位置 1:2,将累加器 A的内容压入堆栈:3,将累加器 A的内容同指针 R0所指地址的内容交换:4,将累加器 A的内容同与 R0中的内容相异或:5,将 20H单元的内容清零:6,从外部数据存储器读取数据7,如果 20H=1就转移到标号 NEXT,且将 20H复位习题课1、取 20H~26H中的无符号数的中值(中值滤波 )。结果235132732907个数大循环 6次,即 N个数大循环 M=N-1次用 R2表示大循环次数,初始值为 6第一次51339027322小循环6次第二次53132732290小循环5次第三次35132723290小循环4次第四次35132273290小循环3次第五次35213273290小循环2次第六次32513273290小循环1次用 R3控制小循环次数。第一次小循环次数为 M,以后依次递减。因此,初始值可以用 R2表示。用 R0为数据指针初始值为 20H小循环体是分支程序:如果(R0)&(R0+1),则两者对换。(R3) (R2)(R0)=20H(R0) (R0+1)( R0)&(R0+1)指向下一个数(R3-1)=0(R2-1)=0(R2)=06H结束ORG 0000HMOV R2,#06HSORT:MOV A,R2MOV R3,AMOV R0,#20HLOOP:DONE:DJNZ R3,LOOPDJNZ R2,SORTSJMP $MOV A,@R0INC R0PUSH ACLR CSUBB A,@R0POP AJC DONEXCH A,@R0DEC R0MOV @R0,AINC R02、查表法求 1~9的立方数子程序。 X在 A中,结果高位存 R6,低位存 R7。ORG 0000HMOV DPTR,#TABCLR CRLC APUSH AMOVC A,@A+DPTRMOV R6,APOP AINC AMOVC A,@A+DPTRMOV R7,ARETTAB,DW 0000H,H,0027H,H,0216H,H,0729HORG 0000HCLR CRLC AMOV R6,AADD A,MOVC A,@A+PCXCH A,R6ADD A,MOVC A,@A+PCMOV R7,ARETTAB,DW 0000H,H,0027H,H,0216H,H,0729H#06H#03H第七次任务--编程实验一、实验目的进一步掌握程序的编制和调试的方法二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、将 20H~27H中的无符号数中的最大值、最小值存 28H、29H中。2,将 0~7的阶乘存入以 20H为首地址的内部 RAM中。单片机最小系统小结--硬件部分1,单片机的总线系统2,单片机的指令执行的过程3,单片机的最小系统4,单片机的存储器的配置5,单片机并行口的功能6,单片机串行口的输出过程7,单片机外部存储器的编址8,程序存储器与外部数据存储器的统一编址9,程序状态寄存器 PSW中各位的含义10,七段 LED显示器的显示原理总线系统配置ROM RAM指令P口线选法 译码法PSW片内串行口LED64K单片机最小系统小结--软件部分1、寻址方式2、指令分类3、伪指令4、分支程序5、循环程序6、查表程序7、子程序寻址指令伪指令双向 散转循环查表子程序第八次任务--外部中断方式控制 LED(一)、知识点1,中断的概念2,中断响应的过程3,中断服务程序的编制方法(二)、重点1,中断响应的过程2,中断服务程序的编制方法第八次任务--外部中断方式控制 LED一、实验目的1,初步掌握中断的概念2,初步了解外部中断的方法3,掌握中断服务程序的编制方法二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、当中断没发生时,8个 LED按间隔发光。当 P3.3 (INT1)为低电平时,8个 LED循环发光 16次。2、将程序中的 CLR IT1改为 SETB IT1再运行。观察发生中断时与第一次有什么不同。3、删除中断服务程序中的 PUSH ACC 和 POP ACC再运行。观察发生中断时与第一次有什么不同。4、在 P3.3 (INT1)发生中断后,P3.2(INT0)中断,4个 LED循环发光 16次。四、实验线路P1.0P1.1P1.2P1.3P1.4P1.6P1.7P3.3+5V+5VLED0~LED71A1 1Y11A2 1Y21A3 1Y31A4 1Y42A1 2Y12A2 2Y22A3 2Y32A4 2Y474LS2401G2GR0~R7K五、实验程序一ORG 0000HAJMP MAINORG 0013HSJMP ZD1ORG 0020HMAIN:CLR IT1SETB EASETB PX1SETB EX1MOV A,#0AAHHA1S1,MOV P1,AAJMP HA1S1DELAY,MOV R5,#0FFHDELAY1,MOV R4,#0FFHDJNZ R4,$DJNZ R5,DELAY1RETORG 0060HZD1,CLR EAPUSH ACCPUSH R0SETB EAMOV R0,#10HMOV A,#0FFHLOOP,MOV P1,AACALL DELAYCPL AACALL DELAYDJNZ R0,LOOPCLR EAPOP R0POP ACCSETB EARETI五、实验程序二ORG 0000HAJMP MAINORG 0003HSJMP ZD0ORG 0013HSJMP ZD1ORG 0020HMAIN:SETB IT0SETB IT1SETB EASETB PX0SETB EX0SETB EX1MOV A,#0AAHHA1S1,MOV P1,AAJMP HA1S1DELAY,MOV R5,#0FFHDELAY1,MOV R4,#0FFHDJNZ R4,$DJNZ R5,DELAY1RETORG 0060HZD0,CLR EAPUSH ACCPUSH R0SETB EAMOV R0,#10HMOV A,#0FHLOOP,MOV P1,AACALL DELAYCPL AACALL DELAYDJNZ R0,LOOPCLR EAPOP R0POP ACCSETB EARETIORG 0080HZD1,CLR EAPUSH ACCPUSH R0SETB EAMOV R0,#10HMOV A,#0FFHLP,MOV P1,AACALL DELAYCPL AACALL DELAYDJNZ R0,LPCLR EAPOP R0POP ACCSETB EARETI返回中断的概念什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。中断即:计算机在运行某个进程的过程中,由于其它原因,有必要中止正在执行的进程,而去执行引起中断的事件进程,待处理完毕后,再回到被中止进程的被打断的地方继续执行。CPU响应中断,进行中断处理类似于调用子程序。其区别在于:由于引起中断的原因是随机发生的,因而转向中断服务程序进行中断处理也是随机的;而调用子程序,则是在程序中事先安排好的。中断的优点:1、实现分时操作。解决快速的 CPU与慢速的外设之间的矛盾。2、实现实时处理。即对外来信号的及时响应并处理。中断源什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了 …,等等诸如此类的事件,我们把可以引起中断的称之为中断源。8031中一共有 5个:两个外部中断,INT0(由 P3.2脚引入 ),INT1(由 P3.3脚引入 )两个计数 /定时器中断,T0,T1一个串行口接收或发送中断。 RI或 TI中断源通常分为:1、设备中断:由于计算机系统各组成部分的外部设备发生的中断申请。如键盘、打印机等。2、定时时钟:定时提出中断申请。3、故障源:由于系统的故障提出的中断申请。4、程序性中断源:如为调试程序设置断点、单步工作等。中断优先设置我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。中断优先级中由中断优先级寄存器 IP来高置的,IP中某位设为 1,相应的中断就是高优先级,否则就是低优先级。X X X PS PT1 PX1 PT0 PX0串行口 T1 INT1 T0 INT0优先基本规则:1,低优先级中断源可被高优先级中断源所中断,而高优先级中断源不能被任何中断源所中断。2、一种中断源一旦得到中断,与它同级的中断源不能再中断它若没设置优先级,则默认下列优先级:INT0 最高T0INT1T1串行口中断 最低中断处理过程当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。因此,一个完整的中断过程包括:中断申请中断响应中断处理中断返回中断申请INT0,外部中断 0请求,由 P3.2脚输入。通过外部中断 0触发方式控制位IT0,来决定中断输入信号是低电平有效还是负跳变有效。一旦输入信号有效,便由硬件自动 IE0标志位置 1,向 CPU申请中断。INT1,外部中断 1请求,由 P3.3脚输入。通过外部中断 1触发方式控制位IT1,来决定中断输入信号是低电平有效还是负跳变有效。一旦输入信号有效,便由硬件自动 IE1标志位置 1,向 CPU申请中断。IE1 IT1 IE0 IT0TCON位地址 (H)控制寄存器8B 8A 89 88IT1:外部中断 1触发方式控制位。 IT1=0时,外部中断 1控制为电平触发。在电平触发方式中,INT1(P3.3)必须保持低电平,直到 CPU响应该中断为止,并且在该中断服务程序执行完毕之前,外部中断信号必须撤除,否则,将产生另一次中断。IT1=1时外部中断 1触发方式为边沿触发方式。为使 CPU测到 (P3.3)中断请求信号由高到低的负跳变,外部中断源输入的高电平和低电平时间必须保持在 12个振荡周期以上。IE1:外部中断 1请求标志。 IE1=1时,外部中断 1向 CPU请示中断,当CPU响应中断时,由硬件自动清零(边沿触发方式)。如果是电平触发方式,则在 CPU执行完中断服务程序之前由外部中断源撤消有效电平,使IE1清零。中断响应条件中断响应的首要条件,1、中断源发出中断申请。2,CPU允许中断,即 EA=1。3,申请中断的中断源允许中断,即相应有中断允许位为 1。这样,单片机便在紧接着的下一个机器周期 S1的期间响应中断 。否则,将丢弃中断查询的结果。EX1为外部中断 1中断允许位。EX1=1,允许外部中断 1中断; EX1=0,禁止外部中断 1中断。EX0为外部中断 0中断允许位。EX1=0,允许外部中断 1中断; EX1=0,禁止外部中断 0中断。其次还要满足下列条件,1、无同级或高级中断正在服务。2、现行指令执行到最后一个机器周期且已结束。3、若现行指令为 RETI或需访问特殊功能寄存器 IE或 IP的指令时,执行完该指令后,至少需要再执行完一条其它指令。EA EX1 EX0IE位地址 (H)中断允许寄存器AF AA A8中断响应过程INT0 0003HT0 000BHINT1 0013HT1 001BH串行口 0023H如果中断响应条件满足且不存在阻止中断响应的情况,则 CPU将响应中断。1、首先置位相应的优先级状态触发器,用于 CPU开始处理的中断优先级别;2、然后执行一个硬件子程序调用,把断点地址压入堆栈,再把与各中断源对应的中断服务程序首地址送程序计数器 PC;3,同时清除中断请示标志;4、从而控制程序转移到中断服务程序。各中断源对应的中断服务程序首地址如右所示:由于各中断源的入口地址之间只相隔 8个字节,通常在此处存放一条无条件转移指令 LJMP addr16,这 addr16就是真正中断服务程序的入口地址。典型程序如右所示。ORG 0000HLJMP MAINORG 0003HLJMP ZD0ORG 0013HLJMP ZD1中断处理中断服务程序从入口地址开始执行直到返回指令 RETI为止的整个过程称中断处理。中断服务程序的一般流程如右图所示:关中断保护现场开中断中断服务关中断恢复现场开中断RETI所谓现场是指进入中断服务程序之前,有关寄存器(如 ACC,PSW等)中的内容。当在中断服务程序中也用到这些寄存器,就会破坏它们的内容,一旦返回主程序,就会造成主程序的混乱。因此进入中断服务程序后,应首先保护现场。在返回主程序前,应恢复现场。在保护现场和恢复现场时,CPU不能响应新的中断请求。所以,此前要关中断,此后再开中断,允许有更高优先级的中断打断它。典型程序如右所示:ORG 0080HZD1,CLR EAPUSH ACCPUSH R0SETB EA中断程序CLR EAPOP R0POP ACCSETB EARETI若现场信息不需要保护,则保护现场和恢复现场都可以省去。中断返回和中断响应时间CPU在每个机器周期的 S5P2期间采样 INT0和 INT1电平并锁存到 IE0或 IE1标志位上,而 CPU要在下一个机器周期才会查询这些标志位,这时若满足中断响应条件,CPU便接着 LCALL,转到相应的中断入口。 LCALL指令需 2个机器周期,因此,从外部中断请求有效到开始执行中断服务程序的第一条指令之间至少需要 3个机器周期。实验程序RETI是中断服务程序的结束标志。CPU执行这条指令后,对中断响应时置 1的优先状态触发器清零,然后将堆栈中保护的断点地址弹出到程序计数器PC中,于是 CPU返回断点处继续执行主程序。下面我们再回头读实验程序,一方面看看典型中断程序的结构,另一方面回顾一下整个中断的处理过程。作业八简述中断、中断源和中断源优先级的含义。MCS-51有哪些中断源。优先顺序如何。简述中断响应过程。外部中断有哪两种触发方式,如何定义?它们对触发脉冲或电平有什么要求?第九次任务--脉冲计数(一)、知识点1,定时器 /计数器的概念和结构2,定时器的控制字3,定时器的四种工作方式(二)、重点1,定时器的控制字2,定时器的四种工作方式第九次任务--脉冲计数一、实验目的1,熟悉 8031定时 /计数功能2,掌握定时 /计数初始化编程方法二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、对定时器 0外部输入的脉冲进行计数,并送显示器显示。( CONT.ASM)2、用定时器 0实现 P1.0所控制的 LED每秒钟闪烁一次。3、定时器 0外部输入的 5个脉冲,P1.0所控制的 LED闪烁一次。四、实验线路Vcc P2.0~P2.3XTAL2ALEXTAL1RST8031P0.7|P0.0P1.0EA PSENVss74LS373VccGQ7D7 || Q0D0GNDEA11~A8VccVpp2764A7~A0D7~D0 CSOE+5V+5V+5V+5VLED388+5V用单片机点亮发光二极管 LED( 最小系统 )五、实验程序一ORG 0000HCONT,MOV SP,#53HMOV TMOD,#05HMOV TH0,#00HMOV TL0,#00HSETB TR0CONT1:MOV R2,TH0MOV R3,TL0LCALL CONT2MOV R0,#79HMOV A,R6LCALL PWORMOV A,R5LCALL PWORMOV A,R4LCALL PWOR五、实验程序二ORG 0000HAJMP STARTORG 000BHAJMP TIME0ORG 0030HSTART:MOV P1,#0FFHMOV 30H,#00HMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B7HSETB EASETB ET0SETB TR0LOOP,AJMP LOOPTIME0:PUSH ACCPUSH PSWINC 30HMOV A,30HCJNE A,#20,T_RETT_L1,CPL P1.0MOV 30H,#0T_RET:MOV TH0,#3CHMOV TL0,#0B7HPOP PSWPOP ACCRETIEND计数与定时1、单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。在 MCS51中有两个定时器 /计数器 T0,T1。3、当定时器 /计数器发生溢出时,则向 CPU申请中断。T0的中断入口地址是 000BH,T1的中断入口地址是 001BH4、对定时器 /计数器预置常数,就可以控制发生溢出的时间或次数。且该常数愈大,发生溢出的时间愈短,次数愈少。2、单片机中用工作方式来确定定时器 /计数器 TH,TL的容量。方式 0,13位计数器;方式 1,16位计数器;方式 2:自动再装入 8位计数器 ;方式 3,T0为二个 8位计数器,T1对外停止计数一、计数概念的引入从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是 1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长 1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。二、定时8031中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,将它定时在 1个小时后闹响,换言之,也可以说是秒针走了 3600次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是 1秒。三、计数器的容量从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到 999…,那么单片机中的计数器有多大的容量呢? 8031单片机中有两个计数器,分别称之为 T0和 T1,这两个计数器分别是由两个 8位的 RAM单元组成的,即每个计数器都是 16位的计数器,最大的计数量是 65536。四、溢出让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。水溢出是流到地上,而计数器溢出后将使得 TF0变为,1”。至于 TF0是什么我们稍后再谈。一旦 TF0由 0变成 1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。这个事件就是中断五、任意定时及计数的方法刚才已研究过,计数器的容量是 16位,也就是最大的计数值到 65536,因此计数计到 65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于 65536个计数值的要求,如包装线上,一打为 12瓶,一瓶药片为 100粒,怎么样来满足这个要求呢?如果是一个空的盆要 1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要 10000滴嘛?显然我们采用预置数的方法,我要计 100,那我就先放进 65436,再来 100个脉冲,不就到了 65536了吗。定时器 /计数器的方式控制字振荡器 /12T0引脚C/T=0C/T=1K TL0(5位 )TH0(8位 ) TF0TR01 ≥1 &INT0引脚GATE定时器共有两个控制字,由软件写入 TMOD和 TCON二个 8位寄存器,用来设置 T0和 T1的工作方式和控制功能。系统复位时,两个寄存器各位清 0。1、工作方式寄存器 TMOD( 89H)GATE C/T M1 M0 GATE C/T M1 M0T1 T0M1 M0 工作方式00 方式 001 方式 110 方式 211 方式 32、控制寄存器 TCON( 88H)TF1 TR1 TF0 TR0 用于外部中断 定时器计数器1 0 INT01GATE=1时,还要求INT0=1,TR0才能启动计数INT00 111 GA E=0时,计数不受I 控制,TR0=1就能启动计数1计数方式工作 -实验程序一分析ORG 02A0HCONT,MOV SP,#53HMOV TMOD,#05HMOV TH0,#00HMOV TL0,#00HSETB TR0CONT1:MOV R2,TH0MOV R3,TL0调二转十进制子程序结果送显示缓冲器调显示子程序SJMP CONT1置堆栈顶指针 01TMODM1M0=00方式 0,13位计数器C/T=1计数方式GATE=0仅 TR0=1就可启动计数最大计数值 =213-T0初值=2启动计数定时方式工作 -实验程序二分析ORG 0000HAJMP STARTORG 000BHAJMP TIME0ORG 0030HSTART:MOV P1,#0FFH ;关所有的灯MOV 30H,#00H ;软件计数器预清 0MOV TMOD,#01H ;T0工作方式 1MOV TH0,#0ECHMOV TL0,#78H ;预置数 60536SETB EA ;开总中断允许SETB ET0 ;开 T0允许SETB TR0 ;T0开始计数LOOP,AJMP LOOP ;等待中断TIME0,PUSH ACCPUSH PSW ; 保护现场INC 30H; (30H)+1→ 30HMOV A,30HCJNE A,#64H,T_RET ;(30H)=100?T_L1,CPL P1.0 ;到了,取反 P1.0MOV 30H,#00H ;清软件计数器T_RET,MOV TH0,#3CHMOV TL0,#0B7H ;重置定时常数POP PSW;恢复现场POP ACCRETIEND思路,1秒 =1000ms=10ms× 100,因此定时器定时 t=10ms中断一次,中断时使 30H的数加 1,加到 100时,P1.0取反,使 LED灭或亮。关键是确定初值 x。 x =216- t /机器周期,晶振频率为 6Mz时,机器周期为 2× 10-6秒。即 x =216- (10 × 10-3) /( 2 × 10-6) =60536=EC78H,所以,TH0= 0ECH,TL0= 78H计数中断方式工作 _实验程序三ORG 0000HAJMP STARTORG 000BHCPL P1.0RETIORG 0030HSTART:MOV P1,#0FFHMOV TMOD,#06HMOV TH0,#0FBHMOV TL0,#0FBHSETB IT0SETB EASETB ET0SETB TR0LOOP,AJMP LOOPEND 10TMODM1M0=10方式 2,自动值初值的 8位计数器C/T=1计数方式GATE=0仅 TR0=1就可启动计数启动计数负脉冲触发中断总允许允许计数器中断T0初值 =28 -计数值=256- 5 =251=0FBH定时器 /计数器程序编制1、选择工作方式和定时 /计数,确定 TMOD2,根据定时时间或脉冲数计算初值,t=(2N-x) × 机器周期,N为指定工作方式下对应的计数器的位数。3、编写程序。一般形式如下:主程序OGR 0000HLJMP MAINORG 000BHLJMP T0ORG 001BHLJMP T1ORG 0030HSTART:MOV TMOD,#; 确定工作方式MOV THx,#; 置初值MOV TLx,#MOV IE,#; 开中断SETB TRx; 启动计数LOOP:……… ; 执行正常程序SJMP LOOP中断服务程序OGR xxxxHT0:PUSH xx; 保护现场MOV THx,#; 重置初值,MOV TLx,#; 方式 2不要实际中断操作内容POP xx; 恢复现场RETI ; 中断返回作业八1,P79 3。2,P79 4。3,P79 6。4,P79 8第十次任务--串行通信(一)、知识点1,串行通信和异步通信的概念2,MCS51串行口的组成和四种工作方式3,波特率的概念和计算4,初始化,发送和接收程序的编制(二)、重点1,异步通信的概念2,串行口方式的初始化,发送和接收程序的编制第十次任务 --串行通信一、实验目的1,掌握串行口工作方式 2的程序设计,掌握单片机通信程序编制方法 。2,了解实现串行通信的硬环境,数据格式的协议,数据交换的协议 。掌握双机通信的原理和方法 。二、实验设备DVCC仿真系统二套。三、实验内容1、利用 8031单片机串行口,实现双机通信。2、将 1号实验机键盘上键入的数字显示到 2号实验机的数码管上。3、将 1号机内部 RAM50H~5FH中的数据发送到 2号机对应的内部 RAM中。第九次任务--串行通信四、实验步骤1、按图接线2、两台 DVCC实验系统处于,P.”状态下。3、在 1号机上输入 0D00后,按 EXEC键。4、在 2号机上输入 0E30后,按 EXEC键。5、从 1号机的键盘上输入数字键,会显示在 3号机的显示器上。五、实验线路U1 U2P3.1P3.1P3.0P3.0GND GND六、程序框图发送 开始置串行口模式置 TI模式及常数启动定时器显示 8031-1有数字键按下发送键值发送完NNYY接收 开始置串行口模式置 TI模式及常数启动定时器显示 8031-2串行口有数据接收数据NY显示数据七、参考程序发送 ORG 0000HLOOP0:MOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHMOV SCON,#0C0HSETB TR1MOV R0,#50HMOV R7,#10HLOOP1:MOV A,@R0MOV C,PMOV TB8,CMOV SBUF,AWAIT,JBC TI,LOOP2SJMP WAITLOOP2,INC R0DJNZ R7,LOOP1接收 ORG 0000HLOOP0:MOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHMOV SCON,#0C0HSETB TR1MOV R0,#50HMOV R7,#10HLOOP1,JBC RI,LOOP2SJMP LOOP1LOOP2,MOV A,SBUFMOV @R0,AINC R0DJNZ R7,LOOP1返回串行通讯的基本概念1,单片机与外界进行信息交换称之为通讯。 8051单片机的通讯方式有两种:并行通讯和串行通讯。2,并行通讯,数据的各位同时发送或接收。3,串行通讯,数据一位一位顺序发送或接收。包括异步通讯和同步通讯。4,通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。5,波特率:即数据传送的速率,其定义是每秒钟传送的二进制数的位数。异步通讯异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:在一帧格式中,先是一个起始位 0,然后是 8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位 1。用这种格式表示字符,则字符可以一个接一个地传送。在异步通讯中,CPU与外设之间必须有两项规定,即 字符格式 和 波特率 。字符格式的规定是双方能够在对同一种 0和 1的串理解成同一种意义。同步通讯同步通讯:在异步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。8051单片机的串行接口结构8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式( UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的 8051多机系统也可以通过同步方式,使用 TTL或 CMOS移位寄存器来扩充 I/O口。8051单片机通过引脚 RXD( P3.0,串行数据接收端)和引脚 TXD( P3.1,串行数据发送端)与外界通讯。 SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被 CPU读出数据,一个只能被 CPU写入数据。串行口的控制寄存器串行口控制寄存器 SCON用于定义串行口的工作方式及实施接收和发送控制。字节地址为 98H,其各位定义如下表:D7 D6 D5 D4 D3 D2 D1 D0SM0 SM1 SM2 REN TB8 TR8 TI RISM0 SM1 工作方式 功能 波特率00 方式 0 8位移位寄存器 fosc/1201 方式 1 10位 UART 可变10 方式 2 11位 UART fosc/64或 fosc/3211 方式 3 11位 UART 可变工作方式位多机方式控制位接收允许控制位待发送数据的第九位接收到数据的第九位发送中断标志接收中断标志特别提示:除方式 0外,TI,RI在中断响应后,必须用软件清 0SM2,多机通讯控制位。在方式 0时,SM2一定要等于 0。在方式 1中,当( SM2) =1则只有接收到有效停止位时,RI才置 1。在方式 2或方式 3当( SM2) =1且接收到的第九位数据 RB8=0时,RI才置 1。REN,接收允许控制位。由软件置位以允许接收,又由软件清 0来禁止接收。TB8,是要发送数据的第 9位。在方式 2或方式 3中,要发送的第 9位数据,根据需要由软件置 1或清 0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。RB8,接收到的数据的第 9位。在方式 0中不使用 RB8。 在方式 1中,若( SM2) =0,RB8为接收到的停止位。在方式 2或方式 3中,RB8为接收到的第 9位数据。TI,发送中断标志。在方式 0中,第 8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。 TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清 0。RI,接收中断标志位。在方式 0,当接收完第 8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于 SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。 RI也必须用软件清 0。程序解读 ―发送程序发送 ORG 0000HLOOP0:MOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHMOV SCON,#0C0HSETB TR1MOV R0,#50HMOV R7,#10HLOOP1:MOV A,@R0MOV C,PMOV TB8,CMOV SBUF,AWAIT,JBC TI,LOOP2SJMP WAITLOOP2,INC R0DJNZ R7,LOOP10 0 1 0 0 0 0 0定时工作方式 工作方式 2定时器 1 定时器 0;定时器 1方式 2定时;置定时器初值,选定波特率为 9600bps1 1 0 0 0 0 0 0通信方式 3:为波特率可变的11位 UART方式。 1个起始位,0”,8个数据位,一个附加第 9位(在 TB8中)和 1个停止位,1”SM0 SM1 SM2 REN TB8 TR8 TI RI不允许多机通信不允许发送禁止中断;选择通信方式 3;启动计数;指针指向待发送数据所在的地址; R7为长度计数器,共 10H个数;待发送数传送到 A;奇偶标志传送到 CY;再传送到 TB8信为第九位;通过 SBUF发送;等待发送完毕,并使 TI复位TI=0,表示没发送完毕,继续等待;TI=1,表示发送完毕,令 TI=0,并转移到 LOOP2;指向下一个待发送的数 ;数据没发送完毕,继续;完毕则结束置定时器初值,选定波特率为 9600bpsSMOD=0或 1)2 5 6(1232231Xf o scS M O D波特率和串行口方式程序解读 ―接收程序接收 ORG 0000HLOOP0:MOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHMOV SCON,#0C0HSETB TR1MOV R0,#50HMOV R7,#10HLOOP1,JBC RI,LOOP2SJMP LOOP1LOOP2,MOV A,SBUFJB PSW.0,ONEEJB RB8,ERRRSJMP RIGTONEE,JNB RB8,ERRRRIGT,MOV @R0,AINC R0DJNZ R7,LOOP1ERRR,.…,.;定时器 1方式 2定时;置定时器初值,选定波特率为 9600bps;选择通信方式 3;启动计数;指针指向待发送数据所在的地址; R7为长度计数器,共 10H个数;等待 R接收完毕,并使 RI复位;接收到的数传送到 A;接收到的数是奇数,转移到 ONEE;是偶数,若 RBB=1,则接收错误,转 ERRR;是偶数,RBB=0,则接收正确,转 RIGT;是奇数,若 RBB=0,则接收错误,转 ERRR;接收正确,存入指定地址;地址指针加 1;没接收完,则继续接收,否则结束;接收错误处理程序作业P95 1P95 5P95 6第十一次任务--用 TTL芯片扩展并行 I/O口(一)、知识点1,接口的概念2,接口的功能3,I/O的编址技术4,I/O数据传送的控制方式5,用 TTL芯片扩展并行 I/O口( 二 ),重点1,接口的功能2,I/O的编址技术3,用 TTL芯片扩展并行 I/O口第十一次任务--用 TTL芯片扩展并行 I/O口一、实验目的学习在单片机系统 中 用 TTL芯片扩展并行 I/O口 的基本 方法二、实验内容1、总线扩展法:采用 74LS244作扩展输入,输入开关的状态; 74LS373作扩展输出,控制 8个LED的亮灭。2、利用 74LS164串并转换扩展,在数码管上循环显示 0~9。 实验线路 2三、实验线路 1返回P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.78031WRP2.6P2.5P2.4RD+5VLED0~LED71A1 1Y11A2 1Y21A3 1Y31A4 1Y42A1 2Y12A2 2Y22A3 2Y32A4 2Y474LS2401G2GR0~R7D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q7D8 Q574LS373CLKCLR1Y1 1A11Y2 1A21Y3 1A31Y4 1A42Y1 2A12Y2 2A22Y3 2A32Y4 2A474LS2441G2GR 1R 1+5V GND74LS138四、参考程序程序一ORG 0600HHA3S:MOV DPTR,#0A000HMOVX A,@DPTRMOV DPTR,#0B000HMOVX @DPTR,AMOV R2,#20HACALL DELAYSJMP HA3SDELAY:。。。。。。RETEND程序二ORG 0000HADDR EQU 20HSTART,MOV A,ADDRMOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AMOV R7,#07HLOOP,DJNZ R7,LOOPLCALL DELAYSJMP STARTTAB:DB 0FCH,60H,0DAH,0F2HDB 66H,0B6H,0BEH,0E0HDB 0FEH,0F6H,0EEH,3EHDB 9CH,7AH,9EH,8EHDELAY,。。。。。。RETEND接口与端口的概念接口则特指计算机与外设之间在数据传送方面的联系 。 其功能主要是通过电路实现的 。 因此称之为接口电路 。一个接口电路中可能包括有多个口,例如保存数据的数据口,保存状态的状态口和保存命令的命令口等,因此一个接口电路就对应着多个端口地址 。端口是供用户使用的,用户在编写有关数据输入 /输出程序时,要用到接口电路中的各个端口 。因此要知道它们的设置和编址情况 。接口的功能1,速度协调由于 CPU与外设速度上的差异,使得数据的 I/O传送只能在确认外设已为数据传送作好准备的前提下才能进行 I/O操作 。 而要知道外设是否准备好,就需要通过接口电路产生或传送外设的状态信息,以此进行 CPU与外设之间的速度协调 。2,数据锁存在接口电路中需设置锁存器,以保存输出数据直至为输出设备所接收 。 因此数据锁存就成为接口电路的一项重要功能 。3,三态缓冲只允许当前时刻正在进行数据传送的数据源使用数据总线,其它数据源都必须与数据总线处于隔离状态 。 为此要求接口电路能为数据输入提供三态缓冲功能 。4,数据转换需要使用接口电路进行数据信号的转换 。 其中包括,D/A 转换,A/D转换,串 / 并转换和并 / 串转换等 。I/O编址技术在计算机中,凡需进行读写操作的设备都存在着编址的问题 。 具体说在计算机中有两种需要编址的部件,一种是存储器,另外一种就是接口电路 。 存储器是对存储单元进行编址,而接口电路则是对其中的端口进行编址 。 对端口编址是为 I/O操作而进行的,因此也称为 I/O编址 。 常用的 I/O编 址共有两 种方式,即独立编 址方式和统一编 址方式 。 80C51使用统一编址方式 。⑴ 独立编址方式优点是 I/O地址空间和存储器地址空间相互独立,但需要专门设置一套 I/O指令和控制信号,从而增加了系统的开销 。(2) 统一编址方式统一编址就是把系统中的 I/O和存储器统一进行编址 。 在这种编址方式中,把接口中的寄存器 ( 端口 ) 与存储器中的存储单元同等对待 。 为此也把这种编址称之为存储器映像编址 。I/O数据传送的控制方式为了实现数据的输入输出传送,共有四种控制方式 。 在单片微机中主要使用以下三种方式 。1,无条件传送方式在进行 I/O操作时,不需要测试外部设备的状态,可以根据需要随时进行数据传送操作 。 一般用于具有常驻的或变化缓慢的数据信号的外部设备如机械开关,指示灯,发光二极管,数码管等,以及工作速度非常快,足以和 CPU同步工作 的外部设备如数 /模转换器 。2,程序查询方式为了实现查询方式的数据输入输出传送,需要由接口电路提供外设状态,并以软件方法进行状态测试 。4 程序中断方式采用中断方式进行数据传送时,当外设为数据传送作好准备之后,就向 CPU发出中断请求 。 CPU响应中断后,再继续执行被中断的原程序 。例例80C51的 I/0扩展并行扩展的 I/O芯片采用并行三总线的扩展方式和串行口扩展方式。由于 80C51的外部数据存储器 RAM和 I/ O口是统一编址的,因此用户可以把外部 64k字节的数据存储器 RAM空间的一部分作为扩展外围 I/ O的地址空间。这样,单片微机就可以像访问外部 RAM存储器那样访问外部接口芯片,对其进行读/写操作。总线图串行总线扩展法在单片机应用系统中,经常采用TTL电路或 CMOS电路锁存器和三态门作为 I/O口扩展芯片,这类芯片常用的有,373,273,244、245等。一般通过 P0口扩展ORG 0600HHA3S:MOV DPTR,#0A000HMOVX A,@DPTRMOV DPTR,#0B000HMOVX @DPTR,AMOV R2,#20HACALL DELAYSJMP HA3SDELAY:。。。。。。RETEND74LS244的地址赋给地址指针 DPTR,Y2=0。WRP2.6P2.5P2.4RDR 174LS138R 174LS373CLK74LS244G8031Y3Y2P2.7 P2.6P2.5P2.4 值 Y2 Y31 0 1 0 A 0 11 0 1 1 B 1 0该指令使 WR引脚产生一个负跳变信号,使 G=0,即244有效,将开关状态读入累加器 A74LS373的地址赋给地址指针 DPTR,Y3=0。该指令使 RD引脚产生一个负跳变信号,使 CLK=0,即373有效,将累加器 A的值输出给 373。串行口扩展方式ORG 0000HADDR EQU 20HSTART,MOV A,ADDRMOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AWAIT,JNB TI,WAITCLR TIMOV R7,#07HLOOP,DJNZ R7,LOOPLCALL DELAYSJMP STARTTAB:DB 0FCH,60H,0DAH,……DELAY,……RETEND典型线路在 MCS51应用系统中,若串行口未被占用,则可用串行口的工作方式 0来扩展并行 I/O口。它不占用片外 RAM的地址。用串行口扩展并行 I/O口常用的芯片是移位寄存器,如74LS164,74LS165等。典型线路如图所示。相应程序如右所示:复位时 SCON=00H方式 0、禁止中断、禁止接收第十二次任务--并行接口 8255控制交通灯(一)、知识点1,8255内部结构2,8255的工作方式3,8031与 8255A的接口(二)、重点1,8255的工作方式2,8031与 8255A的接口第十二次任务--并行接口 8255控制交通灯一、实验目的了解 8255芯片的结构及编程方法,学习交通灯控制的实现方法二、实验内容用 8255做输出口,控制 12个发光二极管亮灭,模拟交通灯管理。初始状态 0为东西红灯,南北红灯。然后实现状态 1-2-3-4-1的循环。状态 1:东西绿灯,南北红灯状态 2:东西绿灯灭,黄灯闪烁几次,南北红灯状态 3:东西红灯,南北绿灯状态 4:东西红灯,南北绿灯灭,黄灯闪烁几次三、实验线路D0 PB.0D1 PB.1D2 PB.2D3 PB.3D4 PB.4D5 PB.5D6 PB.6D7 PB.78255A0 PC.0A1 PC.1RD PC.2WR PC.3CS PC.4RESET PC.5PC.6PC.7+5VLED1~LED81A1 1Y11A2 1Y21A3 1Y31A4 1Y42A1 2Y12A2 2Y22A3 2Y32A4 2Y474LS2401G2GR0~R7+5V1A1 1Y11A2 1Y21A3 1Y31A4 1Y42A1 2Y12A2 2Y22A3 2Y32A4 2Y474LS2401G2GR0~R7LED9~LED12D0D1D2D3D4D5D6D7RDWRP2.0RESET74LS37380318255A是一个 40引脚的双列直插式集成电路芯片 。按功能可把 8255A分为三个逻辑电路部分,即,口电路,总线接口电路和控制逻辑电路 。1,口电路8255A共有三个 8位口,其中 A口和 B口是单纯的数据口,供数据 I/O使用 。 而 C口则既可以作数据口,又可以作控制口使用,用于实现 A口和 B口的控制功能 。数据传送中 A口所需的控制信号由 C口高位部分 ( PC7~PC4) 提供,因此把 A口和 C口高位部分合在一起称之为 A组;同样理由把 B口和 C口低位部分 ( PC3~ PC0) 合在一起称之为 B组 。8255A的逻辑结构和信号引脚结构图2,总线接口电路总线接口电路用于实现 8255A和单片微机的信号连接。其中包括,数据总线缓冲器和读 /写控制逻辑电路 。数据总线缓冲器是一个三态双向 8位缓冲器,作为单片机与 I/O口和控制字寄存器之间的缓冲器读 /写控制逻辑电路输入的控制信号有,CS―片选信号,RD―读信号和 WR―写信号 。 A0,A1―端口选择信号 。8255A共有四个可寻址的端口 ( 即 A口,B口,C口和控制寄存器 ),用二位地址编码即可实现选择 。 RESET―复位信号 ( 高电平有效 ) 。 复位之后,控制寄存器清除,各端口被置为输入方式 。3,控制逻辑电路控制逻辑电路包括 A组控制和 B组控制,合在一起构成 8位控制寄存器 。 用于存放各口的工作方式控制字 。8255A的逻辑结构和信号引脚 结构图I/O工作状态8255A共有三种工作方式,即方式 0,方式 1,方式 2.1,方式 0 基本输入 /输出方式方式 0下,可供使用的是两个 8位口 ( A口和 B口 ) 及两个 4位口 ( C口高 4位部分和低 4位部分 ) 。 四个口可以是输入和输出的任何组合 。 方式 0适用于无条件数据传送,也可以把 C口的某一位作为状态位,实现查询方式的数据传送 。8255A工作方式3、方式 2 双向数据传送方式只有 A口才能选择这种工作方式,这时 A口既能输入数据又能输出数据。在这种方式下需使用 C口的五位线作控制线。方式 2适用于查询或中断方式的双向数据传送。如果把 A口置于方式 2下,则 B口只能工作于方式 0.2、方式 1 选通输入 /输出方式A口和 B口分别用于数据的输入 /输出。而 C口则作为数据传送的联络信号。 方式 1适用于查询或中断方式的数据输入 /输出。C口定义用于输入操作的联络信号有:STB―选通脉冲,输入,低电平有效 。 当外设送来 STB信号时,输入数据装入 8255A的锁存器 。IBF―输入缓冲器满信号,输出,高电平有效 。 IBF信号有效,表明数据已装入锁存器,因此它是一个状态信号 。INTR―中断请求信号,高电平有效,当 IBF为高,信号由低变高 (后沿 )时,中断请求信号有效 。 向单片微机发出中断请求 。数据输入过程,当外设准备好数据输入后,发出信号,输入的数据送入缓冲器。然后 IBF信号有效。如使用查询方式,则 IBF即作为状态信号供查询使用;如使用中断方式,当 信号由低变高时,产生 INTR信号,向单片微机发出中断。单片微机在响应中断后执行中断服务程序时读入数据,并使 INTR信号变低,同时也使 IBF信号同时变低。以通知外设准备下一次数据输入。数据输入操作C口定义数据输出操作用于数据输出操作的联络信号有:ACK―外设响应信号,输入,低电平有效。当外设取走输出数据,并处理完毕后向单片微机发回的响应信号OBF―输出缓冲器满信号,输出,低电平有效 。 当单片微机把输出数据写入 8255A锁存器后,该信号有效,并送去启动外设以接收数据 。INTR―中断请求信号,输出,高电平有效 。数据输出过程:外设接收并处理完一组数据后,发回 ACK信号 。 该信号使 OBF变高,表明输出缓冲器已空 。 如使用查询方式,则 OBF可作为状态信号供查询使用;如使用中断方式,则当 ACK信号结束时,INTR有效,向单片微机发出中断请求 。 在中断服务过程中,把下一个输出数据写入 8255A的输出缓冲器 。 写入后 OBF有效,表明输出数据已到,并以此信号启动外设工作,取走并处理 8255A中的输出数据 。C口定义8255A是可编程接口芯片,共有两种控制字,即 8255A工作方式控制字和 C口位置位 /复位控制字 。1,工作方式控制字工作方式控制字用于确定各口的工作方式及数据传送方向 。8255A的控制字工作方式控制字2,C口位置位 /复位控制字C口的每一位都可以进行置位或复位}

我要回帖

更多关于 adc0809中文资料 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信