单片机习题
单片机复习题含答案

单片机模拟试卷001六、设计题(1题13分;2题12分,共25分)1.某单片机控制系统有8个发光二极管。
试画出89C51与外设的连接图并编程使它们由左向右轮流点亮。
2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。
试画出8051与外设的连接图并编程实现上述要求。
单片机模拟试卷002四、读程序题(每小题4分,共20分) 1.执行下列程序段后,(P1)=_______。
MOV P1,#5DH CPLCPL CLR SETB2.执行下列程序段后,(A)=_______,(C Y )=____。
MOV A ,#C5H RL A3.下列程序段执行后,(R 0)=_______,(7EH)=____,(7FH)=_______。
MOV R 0,#7EH MOV 7EH ,#0FFH MOV 7FH ,#40H 1NC @R 0 1NC R 0 1NC @R 04.已知(SP)=60H ,子程序SUBTRN 的首地址为0345H ,现执行位于0123H 的ACALL SUBTRN 双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。
5.阅读下列程序,说明其功能。
MOV R 0,#data MOV A,@R 0 RL AMOV R 1,A RL A RL AADD A ,R 1 MOV @R 0,A RET五、编程题(每小题4分,共20分)1.已知在累加器A 中存放一个BCD 数(0~9),请编程实现一个查平方表的子程序。
2.请使用位操作指令实现下列逻辑操作: BIT=(10H ∨∧(11H ∨C Y )3.已知变量X 存于V AR 单元,函数值Y 存于FUNC 单元,按下式编程求Y 值。
Y=100100x x x >-=<⎧⎨⎪⎩⎪4.已知在R 2中存放一个压缩的BCD 码,请将它拆成二个BCD 字节,结果存于SUM 开始的单元中(低位在前)。
单片机前四章复习题答案

《单片机原理及应用》习题一、填空题1.单片机与普通计算机的不同之处在于其将_CPU__、存储器和__I/O_3部分集成于一块芯片之上。
2.CPU主要由运算器和控制器组成。
CPU中的布尔处理器用来处理位操作。
3.MSC-51系列单片机中,片内无ROM的机型是 8031 ,有4KB ROM的机型是_8051_,而有4KB EPROM 的机型是 8751 。
4.-32的补码为 B,补码B代表的真值为_-38__D。
5.原码数BFH=_-63_D,原码数6EH=_110_D。
6.100的补码=_64_H,-100的补码= 9C H7.在8031单片机内部,其RAM高端128个字节的地址空间称为特殊功能寄存器或SFR 区,但其中仅有_21_个字节有实际意义。
8.通常单片机上电复位时PC=_0000_H,SP=_07_H,通用寄存器则采用第_0_组,这一组寄存器的地址范围是从_00 H~_07_H。
9.若PSW为18H,则选取的是第_3__组通用寄存器。
10.8031单片机复位后R4所对应的存储单元地址为_04_H,因上电时PSW=_00_H。
11.若A中数据为63H,那么PSW的最低位(即奇偶位P)为_0_。
12.在微机系统中,CPU是按照程序计数器PC 来确定程序的执行顺序的。
13.在8031单片机中,使用P2、P0口传送地址信号,且使用了P0口来传送数据信号,这里采用的是总线复用技术。
14.堆栈遵循先进后出(或后进先出)的数据存储原则,针对堆栈的两种操作为_PUSH_和_POP_。
15.当8051地RST端上保持两个机器周期以上低电平时,8051即发生复位。
16.使用8031单片机时需将EA引脚接_低__电平,因为其片内无程序存储器。
17.8位机中的补码数80H和7EH的真值分别为_-128__和_127 。
18.配合实现“程序存储自动执行”的寄存器是_PC_,对其操作的一个特别之处是每取完一字节指令后PC内容会自动加1 。
单片机原理习题与答案

习题1. 何为“准双向I/O接口”?在MCS-51单片机的四个并口中,哪些是“准双向I/O接口”?答:准双向I/O接口是能实现输入输出功能,但在使用时只能从输入和输出中选择一个。
MCS-51单片机的四个并口中P1、P2、P3是准双向I/O接口。
2. 80C51单片机内部有几个定时/计数器?它们由哪些功能寄存器组成?怎样实现定时功能和计数功能?答:80C51单片机内部有两个16位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMOD和TCON功能寄存器组成。
通过TMOD中的C/T位选择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。
3. 定时/计数器T0有几种工作方式?各自的特点是什么?答:有四种工作方式,特点见下表:M1 M0 工作方式方式说明0 0 0 13位定时/计数器0 1 1 16位定时/计数器1 02 8位自动重置定时/计数器1 1 3 两个8位定时/计数器(只有T0有)4. 定时/计数器的四种工作方式各自的计数范围是多少?如果要计10个单位,不同的方式初值应为多少?答:有四种方式。
方式0计数范围:1~8192;方式1计数范围:1~65536;方式2计数范围:1~256;方式3计数范围:1~256。
如果计10个单位,方式0初值为:8192-10=8182;方式1初值为:65536-10=65526;方式2初值为:256-10=246;方式2初值为:256-10=246。
5. 设振荡频率为12MHz,如果用定时/计数器T0产生周期为100ms的方波,可以选择哪几种方式,其初值分别设为多少?答:只能选择方式1,初值为65536-50000=15536。
6. 何为同步通信?何为异步通信?各自的特点是什么?答:异步通信方式的特点是数据在线路上传送时是以一个字符(字节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。
特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。
单片机习题答案

《单片机应用技术》习题答案第一章概述1. 什么是总线?总线主要有哪几部分组成?各部分的作用是什么?总线是连接计算机各部件之间的一组公共的信号线。
一般情况下,可分为系统总线和外总线。
系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB)地址总线(AB):CPU根据指令的功能需要访问某一存储器单元或外部设备时,其地址信息由地址总线输出,然后经地址译码单元处理。
地址总线为16位时,可寻址范围为216=64K,地址总线的位数决定了所寻址存储器容量或外设数量的范围。
在任一时刻,地址总线上的地址信息是惟一对应某一存储单元或外部设备。
控制总线(CB):由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的,以使在传送信息时协调一致的工作。
CPU还可以接收由外部设备发来的中断请求信号和状态信号,所以控制总线可以是输入、输出或双向的。
数据总线(DB):CPU是通过数据总线与存储单元或外部设备交换数据信息的,故数据总线应为双向总线。
在CPU进行读操作时,存储单元或外设的数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设2.什么是接口电路? CPU与接口电路连接一般应具有哪些信号线?外部设备与接口电路连接一般应具有哪些信号线?CPU通过接口电路与外部输入、输出设备交换信息,一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。
CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。
一般情况下,接口电路通过地址总线、控制总线和数据总线与CPU连接;通过数据线(D)、控制线(C)和状态线(S)与外部设备连接。
3. 存储器的作用是什么?只读存储器和随机存储器有什么不同?存储器具有记忆功能,用来存放数据和程序。
计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。
随机存储器一般用来存放程序运行过程中的中间数据,计算机掉电时数据不再保存。
单片机原理及应用习题 (带答案)

《单片机原理及应用》习题一、填空1、MCS-51单片机访问外部存储器时,利用 ALE 信号锁存来自 P0 口的低8位地址信号。
2、MCS-51系统中,当PSEN 信号有效时,表示从P0口稳定地读入了 低8位地址 。
3、通常单片机上电复位时PC=0000H ,SP= 07H ;而工作寄存器则缺省采用第 00 组,这组寄存器的地址范围是从 00H~07H 开始。
4、MCS-51单片机的存储器从物理结构上可划分 4 个空间,从逻辑上分别可划分 3 个空间。
5、MCS-51单片机8031中有 2 个16位的定时/计数器,可以被设定的工作方式有 4 种。
6、MCS-51有 5 中断源,有 2 中断优先级,优先级由软件填写特殊功能寄存器 加以选择。
7、当/EA 接地时,MCS-51单片机将从_ 外部程序的存储器_____的地址0000H 开始执行程序。
8、中断请求信号有 电平 触发和 边沿 触发两种触发方式。
9、用串行口扩展并行口时,串行接口的工作方式应选为 0 。
10. MCS -51复位后·CPU 从 0000 H 单元开始执行程序。
·SP 的内容为 07 H , 第一个压入堆栈的数据将位于 片内 RAM 的 08 H 单元。
·SBUF 的内容为 不定 。
·ADDC A , #54H 指令执行后 , PSW 寄存器的内容将等于 01 H 。
11. 8051AH·片内设置有4KB 的ROM , 当EA 端保持高电平时 , PC (程序计数器)值超过 OFF H时 , 将自动转向执行外部程序存储器的程序。
·可做通用I/O 的至少有_P1_口的8条I/O 线。
_P0_口作地址/数据总线, 传送地址码的_低_8位 , _P2 口作地址总线 , 传送地址码的高__8位。
12.存储器组织·8051片内RAM 有 128 个字节 , 片外RAM 寻址范围为 64K 个字节。
单片机习题答案

单片机习题答案第1章习题参考答案1-1什么是单片机?它与一般微型计算机在结构上何区别?微型计算机的基本结构由CPU(运算器、控制器)、存储器、输入设备和输出设备五大部分组成,各部分通过外部总线连接而成为一体。
单片机的结构是在一块芯片上集成了中央处理器(CPU)、存储器、定时器/计数器、中断控制、各种输入/输出接口(如并行I/O口、串行I/O口和A/D转换器)等,它们通过单片机内部部总线连接而成为一体。
1-2MCS-51系列单片机内部资源配置如何?试举例说明8051与51兼容的单片机的异同。
答:MCS-51系列单片机内部资源配置型号8031/80C318051/80C51程序存储器片内RAM定时/计数器并行I/O口串行口中断源/中断优先级无128B128B128B256B256B2某162某162某163某163某164某84某84某84某84某8111115/25/25/26/26/24KBROM无8751/87C514KBEPROM8032/80C328052/80C524KBROM8051与51兼容的单片机的异同厂商型号程序存储片内定时/并行串行中断源/优先级5/26/2直接驱动LED输出,片上模拟比较器256B3某163219/2SPI,WDT,2个数据指针其它特点器RAM计数器I/O口口IntelATMEL8051/80C514KBROM128BAT89C20512KBFlahROMAT89S5312KBFlah ROMAnalogADuC812DeviceW77E5832KB256B+3某1636212/2扩展了4位I/O 口,双数据指针,WDT。
19/2WDT,SPI,8通道12位ADC,2通道12位DAC,片上DMA控制器。
.飞利浦80C552无256B3某1648115/4CMOS型10位ADC,捕捉/比较单元,PWM83/87C5528KBEEPROM83/89CE55832KBEEPROM256B+3某16401024B115/4256B3某1648115/4CMOS型10位ADC,捕捉/比较单元,PWM8通道10位ADC,捕捉/比较单元,PWM,双数据指针,IC总线,PLL (32kHz)。
单片机原理与应用练习题(附参考答案)
《单片机原理与应用》练习题(附参考答案)一、单项选择题:(2分/题,共60分)1.MCS—5l单片机的最大程序寻址空间是()(A)16KB (B)32 KB(C)64 KB (D)128 KB2.在CPU内部,反映程序运行状态或反映运算结果的特征寄存器是()。
(A)PSW (B)PC(C)A (D)SP3.MCS-51单片机扩展外部程序存储器和数据存储器()。
(A)分别独立编址(B)统一编址(C)分别独立编址或统一编址(D)动态变址4.MCS—5l单片机的堆栈区是设置在( )中。
(A)片内ROM区(B)片外ROM区(C)片内RAM区(D)片外RAM区5.在寄存器间接寻址方式中,间址寄存器中存放的数据是( )。
(A)参与操作的数据(B)操作数的地址值(C)程序的转换地址(D)指令的操作码6.CPU主要的组成部部分为()(A)运算器、控制器(B)加法器、寄存器(C)运算器、寄存器(D)运算器、指令译码器7.进位标志CY在()中(A)累加器(B)算逻运算部件ALU(C)程序状态字寄存器PSW (D)DPTR8.单片机的堆栈指针SP始终是()(A)指示堆栈底(B)指示堆栈顶(C)指示堆栈地址(D)指示堆栈长度9.当标志寄存器P S W的R S O和R S I分别为1和0时,系统选用的工作寄存器组为()(A)组0 (B)组1(C)组2 (D)组310.提高单片机的晶振频率,则机器周期()(A)不变(B)变长(C)变短(D)不定11.8051单片机共有()个中断源。
(A)5 (B)6(C)7 (D)812.8051单片机中数据总线是()位的。
(A)4 (B)8(C)16 (D)3213.若(R1)=30H,(30H)=10H,则执行指令DEC @R1后,30H单元的内容是()。
(A)2FH (B)0FH(C)31H (D)11H14.一个晶振频率是12MHZ的单片机的机器周期是()ms。
(A)1 (B)2(C)0.5 (D)315.8051单片机复位后,P0口的电平是()。
51单片机基础知识试题题库(含答案)
第二章习题参考答案一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。
2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。
3、当使用8751且EA=1,程序存储器地址小于 1000H 时,访问的是片内ROM。
4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。
5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。
6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。
7、PSW中RS1 RS0=10时,R2的地址为 12H 。
8、PSW中RS1 RS0=11时,R2的地址为 1AH 。
9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。
10、PC复位后为 0000H 。
11、一个机器周期= 12 个振荡周期= 6 个时钟周期。
12、PC的内容为将要执行的的指令地址。
13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。
14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。
15、若A中的内容为63H,那么,P标志位的值为 0 。
16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW=00H 。
这时当前的工作寄存器区是第 0 工作寄存器区。
17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。
18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。
19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。
调用返回时,再进行出栈保护,把保护的断点送回到 PC 。
20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为 64 KB。
单片机复习题含答案
1、单片机应用程序一般存放在(B )A、RAMB、ROMC、寄存器D、CPU2.在单片机中,通常将一些中间计算结果放在(A )中A、累加器B、控制器C、程序存储器D、数据存储器3.89C51单片机有片内ROM容量( A)A 4KB B. 8KB C. 128B D. 256B4、CPU主要的组成部部分为(A)A、运算器、控制器B、加法器、寄存器C、运算器、寄存器D、运算器、指令译码器5.INTEL8051CPU是(C)位的单片机A、16B、4C、8D、准166.CPU由___运算器__和控制器构成。
1、PC存放__下一条要执行的指令的16位地址__,具有_ 自动加一_特性。
在8051中决定程序执行顺序的是PC还是DPTR是PC它是_16__位(是,不是)不是SFG2、PSW用于存放__指令执行后的有关状态____,在8051中PSW是__8___ 位,当8051执行94H+4BH后,PSW的CY、AC、OV、P的值是多少CY=0、AC=0、OV=0、P=13、什么是堆栈8051的堆栈设在何处哪个寄存器是堆栈指针堆栈存取数据的原则是什么答:1)堆栈是在内RAM区专门开辟出来的进行数据存取的一块连续的存储区域。
2) 设在07H上。
3)SP 4)先进后出4.单片机的堆栈指针SP始终是(B)A、指示堆栈底B、指示堆栈顶C、指示堆栈地址D、指示堆栈长度5、进位标志CY在(C)中A、累加器B、算逻运算部件ALUC、程序状态字寄存PSWD、DPTR6、. 8031单片机中的SP和PC分别是( C)的寄存器。
位和8位位和16位位和16位位和8位7、DPTR是什么寄存器它的作用是什么它由哪几个特殊功能寄存器组成答:数据指针DPTR是16位的专用寄存器。
作为对外部数据存储器进行寻址的地址指针。
由两个8位的寄存器DPH和DPL构成1、8051单片机的内部RAM可以分为几个不同的区域各区的地址范围及其特点答:4个区域。
单片机练习试题答案解析
单片机练习题答案一、填空题1、若单片机振荡脉冲频率为6MHz时,一个机器周期为______2μs________。
2、AT89C51单片机的XTAL1和XTAL2引脚是___外接晶振或时钟__引脚。
3、定时器/计数器的工作方式3是指的将定时器/计数器T0 拆成两个独立的8位计数器。
4、若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为__08~0FH____。
5、写出完成相应功能的汇编指令:将立即数11H送到R2____ MOV R2,#11H ____、使ACC.2置位____ SETB ACC.2__、使累加器的最低2位清零___ ANL A,#0FCH ___。
6、A/D转换的作用是将__模拟____量转为数字量。
ADC0809是__8___位的A/D转换芯片。
7、8051的堆栈区一般开辟在用户RAM区的地址为30H~7FH。
8、所谓寻址,其实质就是__如何确定操作数的单元地址问题_。
9、若单片机振荡脉冲频率为12MHz时,一个机器周期为____1μs ______。
10、定时器中断请求发生在__计数溢出的时候_____。
11、中断响应时间是指__从中断请求发生直到被响应去执行中断服务程序所需的时间____。
12、通过CPU对I/O状态的测试,只有I/O已准备好时才能进行I/O传送,这种传送方式称为____程序查询方式___。
13、在中断服务程序中现场保护和现场恢复期间,中断系统应处在__关中断__状态。
14、8051单片机的内部硬件结构包括了:中央处理器(CPU)、数据存储器(RAM)、程序存储器、和2个16位定时/计数器以及并行I/O口、串行口、中断控制系统、时钟电路、位处理器等部件,这些部件通过内部总线相连接。
15、MCS-51的堆栈只可设置在RAM的地址为30H~7FH,堆栈寄存器sp是8位寄存器。
16、MCS-51单片机的P0~P4口均是并行I/O口,其中的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的数据总线和地址总线,在P0~P4口中,P0为真正的双相口,P1—P3为准双向口;P3口具有第二引脚功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【举例】:已知ROM中0302H 单元有一个数x,现要把它送到累加器A中,试编程。 MOV DPTR,#0300H ;立即数送DPTR MOV A,#02H ;立即数送累加器A MOVC A,@A+DPTR ;从ROM的0302单元取数送A 例:通过外部中断1,在中断服务中将B寄存器里的内容左循环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。 此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。 #include #include #define uchar unsigned char uchar bb; //sbit p32=P3^2; void int1(void) interrupt 2 { uchar dd; dd=_crol_(bb,1); //左循环移一次 bb=dd; } 出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断INT0(P3.2)引脚输入,行驶里程为轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。 FFFFFFH=16777215m=16777.215Km #include unsigned char LC[3] _at_ 0x30; void main() { IT0=1;//置边沿触发方式 IP=0x01;//置高优先级 IE=0x81;//开中断 SP=0x06; while(1) { } }
void int0(void) interrupt 0 using 1//中断服务子程序 { LC[0]=LC[0]+2; LC[1]=LC[1]+CY; LC[2]=LC[2]+CY; } 例:从P1.0 引脚输出频率 =1KHz方波。 设:晶振=6MHz。利用T1定时中断。 ORG 0000H AJMP MAIN ORG 001BH ;T1的中断矢量 CPL P1.0 ;中断服务:P1.0取非 RETI ;中断返回 MAIN: MOV TMOD,#20H MOV TH1, #6 MOV TL1, #6 SETB ET1 SETB EA SETB TR1 HERE: AJMP HERE ;原地等待中断 END #include sbit p10=P1^0; void int1(void) interrupt 3 {p10=!p10;//中断服务:P1.0取非 } void main() {TMOD=0x20; TH1=0x06; TL1=0x06; ET1=1; EA=1; TR1=1; while(1){}//原地等待中断 } 例1:用T1产生一个50Hz的对称方波,由P1.1输出,采用程序查询方式,fosc=12MHz。 【解】:首先确定工作方式、工作模式和定时初值。 1,选定时模式(C/T=0); 2,工作方式1(M2 M1=01) ; 3,方波周期T=1/50=0.02s=20ms,用T1定时10ms, 计数初值为: X=216-10×10-3×12×106/12=65536-10000=55536=D8F0H; 即 TH1=D8H, TL1=F0H。 GAT E C/T M1 M0 GATE C/T M1 M0 #include sbit p11=P1^1; void main() { TMOD=0x10;// T1模式1,定时 TR1=1;//启动T1 while(1) { TH1=0x0d8;// T1计数初值 TL1=0x0f0; while(!TF1){ } TF1=0; p11=!p11; } } 利用中断方式编程 #include sbit p11=P1^1; void timer1() interrupt 3 { TH1=0x0d8;// T1计数初值 TL1=0x0f0; p11=!p11;// P1.l取反输出 } void main() { TMOD=0x10;// T1模式1,定时 TH1=0xd8;// T1计数初值 TL1=0x0f0; EA=1;// CPU、T1开中断 ET1=1; TR1=1;//启动T1 while(1){ } }
试编写由Pl.0输出一个周期为2分钟的方波信号的程序。已知fosc=12MHz。 #include sbit p10=P1^0; sbit mFlag _at_ 0x4f; unsigned char ms _at_ 0x40; unsigned char ss _at_ 0x41; void main() { TMOD=0x10;// T1定时,方式1 TH1=0x0d8; TL1=0x0f0;// T1计数初值 EA=1;ET1=1;TR1=1;//启动T1 ms=0x66;//毫秒计数初值100 ss=0x3c;//秒计数初值60 mFlag=0; while(1) {while(!mFlag){}//等待1分钟到 mFlag=0;//清分标志值 p10=!p10//输出变反} } T1中断服务程序 void timer1(void) interrupt 3 { TH1=0x0d8; TL1=0x0f0;// T1重赋初值 ms=ms-1; If(ms==0)// 1秒到否? { ms=0x66;// 1秒到,重赋秒的计数值 ss=ss-1; if(ss==0)// 1分到否? {ss=0x3b;// 1分到了,重赋1分钟的计数值 mFlag=1;}//置1分到标志位,告诉主程序 } }
例:利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示0—9。 根据上图编写的通过串行口和 74LS164 驱动共阳LED数码管 (查表)显示0-9数字的子程序: unsigned char code table[]={0x0c0,0x0f9,0x0a4,0x0b0,0x99, 0x92,0x82,0x0f8,0x80,0x92 }; Void display(unsigned char indx) { unsigned char temp=table[indx]; SBUF=temp; While(!TI){} TI=0; } 例:串行通信方式1应用 用T1工作于方式2,产生波特率1200bps,fosc=6Mhz #include void main() { TMOD=0x20; TL1=0x0f3; TH1=0x0f3; TR1=1; SCON=0x50; ...... EA=1; ES=1; sout(); ...... } void sconServ(void) interrupt 5 { if(!RI) sout(); else sinput(); return; }
void sout() {......} void sinput() { ...... } 例:编写主机与1号从机的联络过程的程序片断。设主、从机均采用方式2工作。 主机呼叫01#从机的联络程序: MASTR: MOV SCON,#98H ; 方式2, SM2=0,REN=1 ,TB8=1,作地址标志 MA1: MOV A,#01H ;发送呼叫地址号01H MOV SBUF,A WAIT1: JBC TI,WAIT2 SJMP WAIT1 WAIT2: JBC RI,MR1 ;等待从机应答 SJMP WAIT2 MR1: MOV A,SBUF ;取出地址应答地址号 XRL A,#01H ;判断是否1号从机应答 JZ ATT ;是则发送数据 ERR: MOV A,#00H ;不是,发送复位信号 MOV SBUF,A ; (TB8=1尚未撤销)
01#从机相应主机呼叫的联络程序: MVSTR: MOV SCON,#0B0H ; 方式2,SM2=1,REN=1,允许接收 SR1: JBC RI,SR2 ; 等待主机呼叫(监听状态) SJMP SR1 SR2: MOV A,SBUF ;取出呼叫地址 XRL A,#01H ;是呼叫本从机吗? JNZ SR1 ;不是,继续监听 CLR SM2 ;是,取消监听状态 MOV A, #01H MOV SBUF, A ;发出地址应答信号 WBT1: JBC TI,SR3 ;等待发送应答信号完成 SJMP WBT1 SR3: JBC RI,SR4 ;等待主机发送 SJMP SR3 SR4: JNB RB8,BTT ;是复位信号吗?不是则跳至发送数据程序处 SETB SM2 ;是复位信号,恢复监听状态 SJMP SR1 ;返回继续监听 BTT: MOV A,SBUF ;联络成功,取主机发送的数据 例1.清零程序 (将2000H—20FFH的内容清零) ★ 汇编语言程序 ORG 0000H SE01: MOV R0,#00H MOV DPTR,#2000H LOO1: CLR A MOVX @DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1 INC R0 ;字节数加1 CJNE R0,#00H,LOO1 ;不到FF个字节再清 LOOP: SJMP LOOP ★ C51程序 #include main( ) { int i; unsigned char xdata *p=0x2000; /* 指针指向2000H单元 */ for(i=0;i<256;i++) /*清零2000H-20FFH单元*/ {*p=0; p++;} } 例2.拆字程序 (将2000H的内容拆开,高位送2001H低位,低位送2002H低位) ★ 汇编语言程序 ORG 0000H SE02: MOV DPTR,#2000H MOVX A,@DPTR MOV B,A ;(2000)→A→B SWAP A ;交换 ANL A,#0FH ;屏敝高位 INC DPTR MOVX @DPTR,A ;送2001H INC DPTR MOV A,B ANL A,#0FH ;(2000)内容屏敝高位 MOVX @DPTR,A ;送2002H SJMP $