用定时器 T0 或 T1 模拟串行口程序
单片机应用技术(c语言知识版第3版)[王静霞]习题集标准答案
![单片机应用技术(c语言知识版第3版)[王静霞]习题集标准答案](https://img.taocdn.com/s3/m/9d3b53556f1aff00bed51eb2.png)
习题 11.1 单项选择题(1) A (2)C (3)C1.2 填空题(1)硬件系统、软件系统(2)时钟电路、复位电路(3)XTAL1、XTAL2、RESET、EA(4)晶振1.3 问答题什么是单片机?它由哪几部分组成?什么是单片机应用系统?答:单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。
单片机应用系统是以单片机为核心,配以输入、输出、显示等外围接口电路和控制程序,能实现一种或多种功能的实用系统。
1.4 上机操作题(1)参考程序:#include <reg51.h> //包含头文件reg51.h,定义了51单片机的专用寄存器//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无void delay(unsigned int i) //延时函数{unsigned int k;for(k=0;k<i;k++);}void main() //主函数{while(1){P1=0x00;delay(20000); //调用延时函数,实际参数为20000P1=0xff;delay(20000); //调用延时函数,实际参数为20000}}(2)参考程序:#include <reg51.h> //包含头文件reg51.h,定义了51单片机的专用寄存器//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无void delay(unsigned int i) //延时函数{unsigned int k;for(k=0;k<i;k++);}void main() //主函数{while(1){P1=0x55;delay(20000); //调用延时函数,实际参数为20000P1=0xff;delay(20000); //调用延时函数,实际参数为20000}}习题 22.1 单项选择题(1)C (2)A (3)A (4)A (5)A (6)D (7)C (8)A (9)A (10)C 2.2 填空题(1)外部程序存储器、外部数据存储器、内部程序存储器、内部数据存储器(2)程序存储器(3)工作寄存器组、位寻址区、用户RAM(4)1us、2us(5)按键复位、上电复位(6)2、高2.3 回答题(1)P3口的第二功能是什么?答:P3口各引脚的第二功能如下表。
单片机原理_期末考试试题_(附答案)
![单片机原理_期末考试试题_(附答案)](https://img.taocdn.com/s3/m/39612feb80c758f5f61fb7360b4c2e3f572725e4.png)
单片机原理及应用期末考试试题汇总1、单片机是将微处理器、一定容量的 RAM 和ROM以及(I/O)口、定时器等电路集成在一块芯片上而构成的微型计算机.2、单片机89C51片内集成了(4)KB的FLASH ROM,共有(5)个中断源。
3、两位十六进制数最多可以表示(256)个存储单元。
4、89C51是以下哪个公司的产品?( C )A、INTELB、AMDC、ATMELD、PHILIPS5、在89C51中,只有当EA引脚接(高)电平时,CPU才访问片内的Flash ROM.6、是非题:当89C51的EA引脚接低电平时,CPU只能访问片外ROM,而不管片内是否有程序存储器。
T7、是非题:当89C51的EA引脚接高电平时,CPU只能访问片内的4KB空间。
F8、当CPU访问片外的存储器时,其低八位地址由(P0)口提供,高八位地址由(P2)口提供,8位数据由(P0)口提供。
9、在I/O口中,(P0)口在接LED时,必须提供上拉电阻,(P3)口具有第二功能。
10、是非题:MCS-51系列单片机直接读端口和读端口锁存器的结果永远是相同的.F11、是非题:是读端口还是读锁存器是用指令来区别的。
T12、是非题:在89C51的片内RAM区中,位地址和部分字节地址是冲突的。
F13、是非题:中断的矢量地址位于RAM区中.F14、MCS-51系列单片机是属于(B)体系结构.A、冯诺依曼B、普林斯顿C、哈佛D、图灵15、89C51具有( 64 ) KB的字节寻址能力.16、是非题:在89C51中,当CPU访问片内、外ROM区时用MOVC指令,访问片外RAM区时用MOVX指令,访问片内RAM区时用MOV 指令。
T17、在89C51中,片内RAM分为地址为 00H~7FH 的真正RAM区,和地址为80H~FFH的特殊功能寄存器(SFR)区两个部分。
18、在89C51中,通用寄存器区共分为(4)组,每组(8)个工作寄存器,当CPU复位时,第(0)组寄存器为当前的工作寄存器。
单片机应用技术试卷14
![单片机应用技术试卷14](https://img.taocdn.com/s3/m/af6de73a312b3169a551a424.png)
单片机应用技术(C语言版)模拟试卷14(考核方式:笔试闭卷,考试时间:120分钟,满分:100分)题号一二三四总分得分签名总得分________统分人签名_________核分人签名__________一、单选题(每小题2分,共20分)【得分:】1.51单片机能够直接执行的程序是。
A、C语言程序B、汇编语言程序C、机器语言程序D、源程序2.程序计数器PC的作用是。
A、指示和引导汇编语言进行汇编B、指示下一条将要执行的指令地址C、指示堆栈指针D、指示返回指令的地址3.8051单片机的机器周期为1µs,则其晶振频率fosc为MHz。
A、1B、2C、6D、124.单片机最多可以扩展外部程序存储器或外部数据存储器。
A、4KBB、8KBC、16KBD、64KB5.按位与运算经常用于把指定位,其余位不变的操作。
A.置1B.取反C.清0D.以上都不对6.定时器T0的计数溢出标志位是。
A.TCON中的TF0B.TCON中的TF1C.TCON中的TR0D.TCON中的TR17.显示方式编程较简单,但占用I/O口线多,其一般适用显示位数较少的场合。
A.静态B.动态C.静态和动态D.查询8.采用P0口来静态控制1个数码管显示,属于通信方式。
A.中断B.查询C.并行D.串行9.异步串行通信的字符帧格式中位于开头的是。
A.起始位B.数据位C.校验位D.停止位10.8051单片机只能输出量。
A.数字B.模拟C.数字与模拟D.串行二、填空题(每空1分,共20分)【得分:】1.(1)口作为通用I/O口使用时,需外加(2);分时复用作为低8位(3)线和8位(4)线时是真正的双向口。
2.访问程序存储控制信号的引脚名称是(5)。
3.复位后,单片机并行I/O口P0~P3的值是(6)。
4.单分支选择结构程序一般用(7)语句实现;双分支选择结构程序一般用(8)语句实现;多分支选择结构程序一般用(9)语句或(10)语句实现。
5.用符号常量PI表示数值3.1415,定义方法是:(11)。
单片机复习试卷库试卷
![单片机复习试卷库试卷](https://img.taocdn.com/s3/m/8a795e6e25c52cc58bd6be09.png)
试卷库试卷一题号一二三四五六七八九十总分累分人签名题分30 10 10 20 16 14 100得分考生注意事项:1、本试卷共 6 页,请查看试卷中是否有缺页或破损。
如有立即举手报告以便更换。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
一、填空题(每空1分,共30分)得分评阅人1、AT89S51单片机主要硬件资源有:8位的CPU、256字节内部RAM、4K 字节的内部ROM、 2 个16 位的定时/计数器、5 个中断源的中断系统、一个全双工的串行口以及看门狗。
2、已知11011011B是一个补码,则其真值为_-37__D;如果01011001B为BCD数,则其转换为十六进制数为3B H。
3、采用ADD指令将十六进制数92H、73H相加后,Cy位为 1 。
4、当程序状态字PSW为(10001001)时,当前工作寄存器组是____1__组,对应的工作寄存器R6的地址是____0E___H。
5、AT89S51单片机外部复位电路有上电自动复位和按钮手动复位两种,单片机复位后其SP的内容为__07_H,P0的内容为0FF H,PC的内容为0000 H。
6、AT89S51单片机扩展程序存储器使用一片具有地址线13根,数据线8根的EPROM,其程序存储器容量为_8_KB,外部程序存储器的读选通信号由单片机PSEN引脚输出。
7、AT89S51单片机中,如CPU能响应外部中断INT1和定时器T1的中断,则对应的中断入口地址分别为0013H 和001BH 。
8、指出以下指令中源操作数的寻址方式MOVC A,@A+DPTR;变址寻址MOV A,@R1;寄存器间接寻址MOV 20H,A;寄存器寻址9、AT89S51单片机三总线包括地址总线、数据总线和控制总线。
10、单片机有两种低功耗方式,即待机(或空闲)方式和掉电(或停机)方式。
11、单片机的时序定时单位包括时钟(或震荡)周期、机器周期和指令周期。
12、ADC0809是_______8___位的模/数转换器。
汇编语言串口通信接收发送的程序题
![汇编语言串口通信接收发送的程序题](https://img.taocdn.com/s3/m/f4ac9da3f242336c1fb95e50.png)
例2 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms 的方波,采用中断方式,设系统时钟频率为12 MHz。
解:1、计算计数初值X:由于晶振为12 MHz,所以机器周期Tcy为1 s。
所以:N=t/ Tcy =10×10-3 / 1×10-6=10000X=65536-10000=55536=D8F0H即应将D8H送入TH0中,F0H送入TL0中2、求T0的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;ORG 0000HLJMP MAIN ;跳转到主程序ORG 000BH ;T0的中断入口地址LJMP DVT0 ;转向中断服务程序ORG 0100HMAIN:MOV TMOD,#01H ;置T0工作于方式1MOV TH0,#0D8H ;装入计数初值MOV TL0,#0F0HSETB ET0 ;T0开中断SETB EA ;CPU开中断SETB TR0 ;启动T0SJMP $ ;等待中断DVT0:CPL P1.0 ;P1.0取反输出MOV TH0,#0D8H ;重新装入计数值MOV TL0,#0F0HRETI ;中断返回END•2、串行口方式1的发送和接收例7-4:89C51串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200b/s。
编写有关的通信程序。
解:7位ASCII码加1位奇校验共8位数据,故可采用串行口方式1。
89C51单片机的奇偶校验位P是当累加器A中1的数目为奇数时,P=1。
如果直接把P 的值放入ASCII码的最高位,恰好成了偶校验,与要求不符。
因此,要把P的值取反以后放入ASCII码最高位,才是要求的奇校验。
•2、串行口方式1的发送和接收•双工通信要求收、发能同时进行。
收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。
单片机试题 填空
![单片机试题 填空](https://img.taocdn.com/s3/m/58e3f227192e45361066f5cf.png)
单片机模拟试卷001一、选择题(每题1分,共10分)1.8031单片机的( )口的引脚,还具有外中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P32.单片机应用程序一般存放在()a) RAM b)ROM c)寄存器 d)CPU3.已知某数的BCD码为0111 0101 0100 0010 则其表示的十进制数值为()a) 7542H b) 7542 c) 75.42H d) 75.424.下列指令中不影响标志位CY的指令有()。
a)ADD A,20H b)CLR c)RRC A d)INC A5.CPU主要的组成部部分为()a)运算器、控制器 b)加法器、寄存器c)运算器、寄存器 d)运算器、指令译码器6.INTEL 8051 CPU是()位的单片机a) 16 b)4 c)8 d)准167.8031复位后,PC与SP的值为()a )0000H,00H b) 0000H,07H c) 0003H,07H d)0800H,00H8.当需要从MCS-51单片机程序存储器取数据时,采用的指令为()。
a)MOV A, @R1 b)MOVC A, @A + DPTRc)MOVX A, @ R0 d)MOVX A, @ DPTR9.8031单片机中既可位寻址又可字节寻址的单元是()a)20H b)30H c)00H d)70H10.下列哪条指令是正确的()a) PUSH R2 b) ADD R0,Ac) MOVX A @DPTR d) MOV @R0,A二、填空题(每空1分,共30分)1.一个完整的微机系统由和两大部分组成。
2.8051 的引脚RST是____(IN脚还是OUT脚),当其端出现____电平时,8051进入复位状态。
8051一直维持这个值,直到RST 脚收到____电平,8051才脱离复位状态,进入程序运行状态,从ROM H单元开始取指令并翻译和执行。
3.半导体存储器分成两大类和,其中具有易失性,常用于存储。
微机原理与接口技术(单片机)试题答案
![微机原理与接口技术(单片机)试题答案](https://img.taocdn.com/s3/m/ba12f936c5da50e2524d7f68.png)
4)定时时间能完成100us和350us交替定时2分
(未采用中断法,但能实现波形输出的,扣3分)
七、综合设计题(每题10分,共10分)
得分
评阅人
1、设有一个8路模拟量输入的巡回监测系统,如下图所示,试求:
(1)、该系统中所扩展的芯片片选信号采用的方法是线选法,此外还有译码法;(2分)
5、当RS1=1,RS0=0,将寄存器R1中的内容压入堆栈,应使用(A)指令。
A、PUSH 11HB、PUSH @R1
C、PUSH 01HD、PUSH R1
6、定时/计数器T1的工作方式2为(A)位工作方式。
A、8B、10C、13D、16
7、当单片机的振荡频率为12MHz时,则定时器每计一个内部脉冲的时间为(A)。
EX0
SCON
98H
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
得分
评阅人
1、内部RAM低128单元划分为哪3个主要部分?说明各部分的特点。
1)00H~1FH为通用工作寄存器区,共分为4组,每组由8个工作寄存器(R0~R7)组成。(2分)
由RS1、RS0决定当前组。工作时只有1组做当前组。(1分)
2)20H~2FH位地址区
分为128位,位地范围为00H~(2分)
3)30H~7FH用户数据区(2分)
2、指令MOV@Ri,A和指令MOVX@Ri,A的功能是否相同.如果不同区别是什么?
两条指令功能是有区别的。(2分)
1)MOV @Ri, A指令是对片内RAM 00H~7FH的访问(2分)
单片机模拟试卷及答案
![单片机模拟试卷及答案](https://img.taocdn.com/s3/m/5e82e2db50e2524de5187e98.png)
单片机应用技术模拟试卷1 答案一、填空题(每空1分,共20分)1、单片机是由CPU、存储器、I/O接口及定时/计数器集成在一个芯片上组成的。
2、十进制数25=16H(十六进制)=00010110B(二进制)。
3、单片机的三总线可以分为地址总线、数据总线和控制总线。
(或者数据总线、地址总线)4、8051的=1意味着访问前4K是内部程序存储器,超过4K后访问的是外部程序存储器。
5、单片机复位后SP=07H,第一个入栈数据进入08H单元。
6、执行ANL A,#0FH后,累加器A的内容高4位是0000 。
7、8051单片机共有5个中断源,2个优先级。
8、能够加间址符@的寄存器有R0、R1和DPTR 。
9、在伟福仿真软件当中输入调试程序我们都保存成后缀是ASM 的文件。
10、可编程并行I/O接口芯片8155内部功能部件包括256B的静态RAM,3个I/O接口和 1个14位的定时/计数器。
11、A/D转换器是将模拟量转换成数字量,D/A转换器是将数字转换成模拟量。
二、选择题(每小题2分,共20分)1、一个完整的系统通常包括( B )。
A.系统软件和应用软件 B. 硬件系统和软件系统0C. 计算机及外设D.硬件和系统软件2、EPROM是指( D )。
A. 随机存储器B.电擦除的只读存储器C.只读存储器D.紫外线可擦除的只读存储器3、先判断后循环的循环程序结构中,循环体至少被执行( A )次。
A.0 B.1 C.2D.34、MCS-51系列单片机的CPU是(B )位的。
A.4位B.8位 C.16位 D.32位5、8031的内部RAM中,用作位寻址的单元地址是(B )。
A.00H-1FHB.20H-2FHC.30H-4FH D.50H-6FH6、12MHz晶振的单片机在定时方式下,定时器可能实现的最小定时时间是(D ) 。
A.8us B.4us C.2us D.1us7、在单片机扩展系统中,8031地址总线和数据总线分时复用所用端口是( D )。
《单片机应用技术》填空题题库x
![《单片机应用技术》填空题题库x](https://img.taocdn.com/s3/m/56915f2feef9aef8941ea76e58fafab069dc449e.png)
《单片机应用技术》填空题题库x《单片机应用技术》习题库答案一、填空题第一、二章1.计算机中最常用的字符信息编码是(ASCII码)。
2.MCS-51系列单片机为( 8 )位单片机。
3.计算机三总线分别为:(数据)总线;(地址)总线;(控制)总线。
4.单片机与普通计算机的不同之处在于其将CPU 、存储器和I/O 三部分集成于一块芯片上。
5.能在紫外线照射下擦除和重写的存储器是(EPROM )型存储器,能够直接在线路中快速写入和读出的存储器是(EEPROM)型存储器。
6.8031、8051的主要区别是8051有 4 k内部ROM。
7.MCS-51单片机片内共有128 字节单元的RAM。
8.8031内部有RAM( 128 )字节、8751内部有ROM( 4K )。
9.MCS-51系列单片机8031、8051、89S52在内部存储器的设置上主要区别是:8031内部(无)程序存储器,8051内部( 4K )程序存储器,89C52内部( 8K )程序存储器。
10.8031构成的单片机应用系统必须扩展程序存储器。
11.M CS-51单片机片内RAM区中有128 个可寻址位。
12.8051单片机片内RAM区80H-0FFH属于特殊功能寄存器(SFR)区。
13.M CS-51单片机存储器结构的主要特点是程序存储器与数据存储器的寻址空间是分开的。
14.M CS-51单片机的存储器配置在物理结构上有4 个存储空间。
15.M CS-51单片机的存储器在逻辑上分为 3 个存储器地址空间16.当MCS-51单片机的EA引脚保持低电平时,CPU只访问片外的程序存贮器17.当EA接地时,MCS-51单片机将从外部程序存储器的地址0000H开始执行程序。
18.在只使用外部程序存储器时,51系列单片机的EA 管脚必须接地。
第1页共9页19.在只使用内部程序存储器时,51系列单片机的EA 管脚必须接高电平。
20.当使用8031单片机时,需要扩展外部程序存储器,此时/EA 应接低电平。
单片机原理及应用技能比赛模拟试题及答案(五)
![单片机原理及应用技能比赛模拟试题及答案(五)](https://img.taocdn.com/s3/m/67157c3f0912a21614792977.png)
单片机原理及应用技能比赛模拟试题(五)一、填空题1、当定时器T0工作在方式3时,要占用定时器T1的 TR1 和 TF1 两个控制位。
2、在定时器T0工作方式3下,TH0溢出时, TF1 标志将被硬件置1去请求中断。
3、在定时器T0工作方式3下,欲使TH0停止工作,应执行一条 CLR TR1 的指令。
4、使用定时器/计数器1设置串行通信的波特率时,应把定时器/计数器1设定作方式 2,即自动重新加载方式。
5、当计数器产生计数溢出时,把定时器/计数器的TF0(TF1)位置“1”。
对计数溢出的处理,在中断方式时,该位作为中断标志位使用;在查询方式时,该位作状态位使用。
6、在定时器工作方式1下,计数器的宽度为16位,如果系统晶振频率为6MHz,则最大定时时间为 131.072ms ,若系统晶振频率为12MHz,则最大定时时间为 65.536ms 。
7、8051单片机内部设有两个16位定时器/计数器,即 T0 和 T1 。
8、T0由两个8位特殊功能寄存器 TH0 和TL0 组成,T1由 TH1 和 TL1 组成。
9、定时时间与定时器的工作方式、计数初值及振荡周期有关。
10、MCS-51的定时器/计数器作计数器时计数脉冲由外部信号通过引脚 P3.4 和 P3.5 提供。
11、MCS-51的定时器/计数器T0的门控信号GATE设置为1时,只有 INT0 引脚为高电平且由软件使 TR0 置1时,才能启动定时器/计数器T0工作。
12、当T0为方式 3 ,T1为方式 2 的时候,8051单片机的定时器可提供3个8位定时器/ 计数器。
1、MCS-51有5个中断源,2个中断优先级,优先级由软件填写特殊功能寄存器 IP 加以选择。
2、外中断请求标志位是 IE0 和 IE1 。
3、 RETI 指令以及任何访问 IE 和 IP 寄存器的指令执行过后,CPU不能马上响应中断。
4、8051单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把 PC的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送 PC ,使程序执行转向程序存储器中的中断地址区。
单片机选择题
![单片机选择题](https://img.taocdn.com/s3/m/93c7cf87daef5ef7ba0d3c4d.png)
1.执行返回指令时,返回的断点是 ( C )(A)调用指令的首地址(B)调用指令的末地址(C)调用指令下一条指令的首地址(D)返回指令的末地址2.MCS-51增强型单片机的3个定时器/计数器的位数是下面的(B)。
A、T0是8位的,T1和T2是16位的;B、T0、T1和T2都是16位的;C、T0是8位的,T1是16位的,T2是24位的;D、T0和T1是16位的,T2是24位的。
3.下面的指令中正确且是寄存器间接寻址的指令是(A )A、MOVX A,@DPTRB、ADD B,@R0C、MOV @R7,AD、MOV A,@R24.PSW中的进位标志指的是( A )。
A、CYB、ACC、OVD、P5.定时器/计数器T0、T1以模式0工作时,是1个(C)位的定时器或计数器。
A、8;B、12;C、13;D、16.6.使用printf、putchar、puts函数输出数据,必须先对串行口初始化,初始化内容之一是写SCON设置串行口工作方式。
设串行通信传输格式为8个数据位、1个停止位,1个校验位,则设置SCON的数值为下面的(B)。
A、0xe0;B、0xc0;C、0xb0;D、0xa0。
7.下列有关MCS-51中断优先级控制的叙述中错误的是( D )。
(A)低优先级不能中断高优先级,但高优先级能中断低优先级(B)同级中断不能嵌套(C)同级中断请求按时间的先后顺序响应(D)同级的多中断请求,将形成阻塞,系统无法响应8.串行异步通信的一帧数据是由以下几个部分组成:①起始位、②数据位、③奇偶校验位、④停止位,选择下列正确说法。
AA、①②③④都是B、①②③④都不是C、①②④不是D、①④不是9.单片机串行口的工作方式( C )是11位异步方式,波特率固定。
A、0B、1C、2D、310.在51内核单片机中,当允许响应定时器/计数器0的中断请求时,其特殊功能寄存器IE 中的(B)位必须为A. ES和ET0B.EA和ET0C.ET1和EAD.EX0和ET011.下面的指令哪一个是错误的。
单片机填空题选择是非
![单片机填空题选择是非](https://img.taocdn.com/s3/m/fdf584e3f242336c1fb95e6b.png)
MCS-51有 4 个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入1 ,P0口做输出口时需要外接上拉电阻。
设计8031系统时, P0、P2 口不能用作一般I\O口,其原因是8031没有片内程序存储器。
MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器SCON 加以选择。
当使用慢速外设时,最佳的传输方式是中断。
当定时器T0工作在方式 3 时,要占定时器T1的TR1和TF1_两个控制位。
MCS-51有 5 个中断源,有 2 个中断优先级,优先级由软件填写特殊功能寄存器 IP 加以选择。
用串口扩展并口时,串行接口工作方式应选为方式 0 。
在串行通信中,有数据传送方向单工、半双工、全双工三种方式。
单片微型机CPU、存储器和I\O接口三部分组成.若不使用MCS-51片内存器引脚EA必须接地。
输入输出设备是计算机与外部世界交换信息的载体。
计算机中最常用的字符信息编码是ASCII。
单片机是将微处理器、一定容量的 RAM 和ROM以及 I/O 口、定时器等电路集成在一块芯片上而构成的微型计算机。
单片机MCS8051片内集成了 4 KB的ROM,共有 5 个中断源,这5个中断源查询顺序由高到低分别是外部中断0 ,定时器/计数器T0,外部中断1 ,定时器/计数器T1,串行口中断。
两位十六进制数最多可以表示 256 个存储单元。
在MCS8051中,片内RAM分为地址为 00H~7FH 的真正RAM区,和地址为80H~FFH的特殊功能寄存器(SFR) 区两个部分。
在MCS8051中,只有当EA引脚接高电平时,CPU才访问片内的Flash ROM。
MCS-51单片机的存储器配置方式把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能,属于哈佛结构。
MCS-51具有 64 KB的字节寻址能力。
51单片机中,通用寄存器区共分为 4 组,每组 8 个工作寄存器,当CPU 复位时,第 0 组寄存器为当前的工作寄存器。
单片机原理及应用试题(含答案
![单片机原理及应用试题(含答案](https://img.taocdn.com/s3/m/34c90c5131b765ce04081405.png)
单片机原理及应用一、填空题:(20分)1、微处理器包括两个主要部分运算器和控制器。
2、总线是连接系统中各扩展部件的一组公共信号线。
按照功能,通常把系统总线分为三组:地址总线、数据总线、控制总线。
3、89C51单片机访问片外程序存储器时,所用的控制信号有:ALE、PSEN、EA,其中ALE用于低8位地址锁存控制,PSEN是片外程序存储器读选通控制信号,EA是片内、片外程序存储器访问的控制信号。
4、89C51单片机访问片外数据存储器时,所用的控制信号有_ALE_、_WR 、RD 。
5、CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。
6、定时器共有两个控制字,由软件写入TMOD和TCON两个8位寄存器,用来设置T0或T1的操作模式和控制功能。
7、中断处理过程可分为三个阶段中断响应、中断处理、中断返回。
8、复位是单片机的初始化操作,其主要功能是把PC初始化为0000H。
复位操作有上电自动复位和按键手动复位两种方式。
9、89C51的P0口除作为一般I/O口使用外,还可作为低8位地址使用。
当系统扩展片外EPROM和RAM时,由P2口输出高8位地址。
10、89C51中断系统的五个中断源为外中断0 、外中断1 、定时器0溢出中断、定时器1溢出中断、串行口中断。
11、89C51单片机的寻址方式通常指对源操作数进行寻址。
二、简答题:(30分)1、80C51单片机的EA信号有何功能?在使用8031时,EA信号引脚应如何处理?答:EA引脚为外部程序存储器地址允许输入端/固化编程电压输入端。
(2分)当EA引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令(1分),但当PC的值超过0FFFH时,将自动执行片外程序存储器中的内容(1分)。
当EA引脚接低电平时,CPU只访问外部EPROM/ROM中的内容,而不管是否有片内程序存储器(1分)。
在使用8031时,EA信号引脚应接地(1分)。
51单片机原理期末考试题
![51单片机原理期末考试题](https://img.taocdn.com/s3/m/52e51b17bb4cf7ec4bfed0af.png)
广西工学院2010— 2011 学年第 2 学期课程考核试题考核课程单片机技术(B卷)考核班级通信081,082 考核类型闭卷学生人数 80人打印份数 85份一、填空题(每小题2分,共20分)1.若累加器A中的数据为67H,则PSW中的P=_1__。
2. 一个机器周期= _6_个状态周期=12个振荡周期。
3.89C51的堆栈是按照先进后出的原则进行存取的RAM区。
4. 用一条指令实现以下功能: 若A中数据不等于200,则程序转至PROM_ CJNZ A,#200H,PROM__。
5. 为了使10H—17H作工作寄存器使用RS1, RS0的取值为__1,0。
6. 89C51中21个特殊功能寄存器,其地址凡是能被8整除的都有位寻址功能。
7. 89C51单片机有片内ROM容量_4KB , RAM容量128。
8. 某串行通信中有1个起始位,8个数据位和1个停止位,应选择的异步串行通信方式为方式1。
9. 在89C51单片机初始化时,SP存放的是07H。
10. 当89C51引脚ALE信号有效时,表示从P0口稳定地送出了_数据和地信息。
四、判断题(每小题2分,共20分)1.如果发生除法溢出错误,则PSW标志位P置1。
(∨)5.对于89C51单片机,当CPU对内部程序存储器寻址超过4K时,系统会自动在外部程序存储器中寻址(∨)。
6.外加晶振频率越高,系统运算速度也就越快,系统性能也就越好(∨)。
7. 位TF0是定时器T1的溢出中断标志位。
(∨)8.在定时器T0和外部中断1都设为高优先级时,外部中断1优先级高于定时器T0。
(×)9.子程序的返回指令是RETI ,中断程序的返回指令是RET。
(×)10.波特率是数据传输的速率,指每秒传送的字节数。
(∨)3、51有 5个中断源,有2个中断优先级,优先级由软件填写特殊功能寄存器 IP加以选择4、中断请求信号有电平触发和脉冲触发两种触发方式。
6、74LS273通常用来作简单输出接口扩展;而74LS244则常用来作简单输入接口扩展。
单片机期末考试试题(答案)
![单片机期末考试试题(答案)](https://img.taocdn.com/s3/m/516278a75901020206409c22.png)
单片机期末考试试题(答案)01、单片机是将微处理器、一定容量的RAM 和ROM以及I/O 口、定时器等电路集成在一块芯片上而构成的微型计算机。
2、单片机89C51片集成了 4 KB的FLASH ROM,共有 5 个中断源。
3、两位十六进制数最多可以表示256 个存储单元。
4、89C51是以下哪个公司的产品?( C )A、INTELB、AMDC、ATMELD、PHILIPS5、在89C51中,只有当EA引脚接高电平时,CPU才访问片的Flash ROM。
6、是非题:当89C51的EA引脚接低电平时,CPU只能访问片外ROM,而不管片是否有程序存储器。
T7、是非题:当89C51的EA引脚接高电平时,CPU只能访问片的4KB空间。
F8、当CPU访问片外的存储器时,其低八位地址由P0 口提供,高八位地址由P2 口提供,8位数据由P0 口提供。
9、在I/O口中,P0 口在接LED时,必须提供上拉电阻,P3 口具有第二功能。
10、是非题:MCS-51系列单片机直接读端口和读端口锁存器的结果永远是相同的。
F11、是非题:是读端口还是读锁存器是用指令来区别的。
T12、是非题:在89C51的片RAM区中,位地址和部分字节地址是冲突的。
F13、是非题:中断的矢量地址位于RAM区中。
F14、MCS-51系列单片机是属于( B )体系结构。
A、冯诺依曼B、普林斯顿C、哈佛D、图灵15、89C51具有64 KB的字节寻址能力。
16、是非题:在89C51中,当CPU访问片、外ROM区时用MOVC指令,访问片外RAM 区时用MOVX指令,访问片RAM区时用MOV指令。
T17、在89C51中,片RAM分为地址为00H~7FH 的真正RAM区,和地址为80H~FFH 的特殊功能寄存器(SFR) 区两个部分。
18、在89C51中,通用寄存器区共分为 4 组,每组8 个工作寄存器,当CPU 复位时,第0 组寄存器为当前的工作寄存器。
单片机原理及应用技术_刘振海_习题
![单片机原理及应用技术_刘振海_习题](https://img.taocdn.com/s3/m/0babf14ca8956bec0975e364.png)
单片机原理及应用技术习题第一章单片机基础知识『思考与练习』一、判断下列说法的正误1.PC是一个不可寻址的特殊功能寄存器,因此不能对它进行任何操作。
()2.—般情况下,用户无法直接修改PC内容,但可直接修改SP内容。
()3.SP内装的是堆栈顶部的数据内容。
()4.对于MCS-51系列单片机,当芯片具有内部ROM时,EA引脚应接高电平;而当芯片不具有内部R0M时,EA引脚应接低电平。
()5.内部工作寄存器区中的32个存储单元,既可以作为通用寄存器使用,也可以作为—般的RAM单元使用。
()6.程序计数器既可以对程序存储器寻址,也可以对数据存储器寻址。
()二、简答题1.8051芯片内部程序存储器和数据存储器各有多少?而外部扩展的程序存储器和数据存储器最多是多少?2.8051芯片内部有多少个寄存器组?使用时是如何进行切换的?3.SFR是什么?其地址范围是多少?4.哪些编号的MCS-51系列单片机内部不具备程序存储器?第二章单片机的基本电路『思考与练习』1.在8051芯片里,若要使用外部扩展的存储器,电路上应进行怎样的处理?2.试设计一个能让8051芯片正常工作的基本电路。
3.在12MHz的8051芯片里,一个机器周期包括多少个状态周期?一个状态周期由几个时钟周期组成?4.当8051芯片复位时,ACC的内容是什么?堆栈指针指向哪个地址?PO的内容是什么?第三章指令系统『思考与练习』一、分析下列程序所采用的寻址方式。
程序如下:ORG0000HAJMP STST:MOV A,#03H;MOV20H,#01H;MOV R1,#20H;MOV A,@Rl;MOV DPTR,#2000H;MOVC A,@A+DPTR;MOV P2,A;END二、阅读程序,写出程序执行结果1.MOV R1,#62H;MOV62H,#55H;CJNE@Rl,#55H,02H;JNC LPl;MOV A,#0FFH;SJMP LP2;LPl:MOV A,#0BBH;LP2:SJMP LP2;累加器A=()2.MOV A,#12H;MOV B,A;MOV A,#08H;ADD A,B;MUL AB;;累加器A=()请根据程序执行过程,将PSW各位状态填入下面的表格中:Cy AC F0RSl RS0OV Fl P3.MOV20H,#0B2H;MOV A,#66H;MOV30H,#45H;MOV R0,#30H;ANL A,R0;ORL A,@R0;SWAP A;CPL A;XRL A,#FFH;ORL20H,A;SJMP$;程序执行后,20H=(),A=()4.ORG2000HMOV SP,#60H;MOV A,#12H;LCALL2500H;ADD A,#40H;MOV B,A;LPl:SJMP LPl;ORG2500HMOV DPTR,#200AH;PUSH DPL;PUSH DPH;RET程序执行后,SP=(),A=(),B=()1、编程实现下列要求:将程序存储器2000H单元的内容传送至内部数据存储器30H单元、R0中。
单片机习题答案1-2
![单片机习题答案1-2](https://img.taocdn.com/s3/m/77db26326ad97f192279168884868762caaebbad.png)
单片机习题答案1-2习题一1.什么是单片机,和微机相比较,它有什么优点?2.请叙述51系列单片机的主要产品及其特点。
3.除51系列单片机外,常用的单片机还有哪些型号,各有什么优点?4.单片机中常用的数制有哪些,它们之间相互如何转换?5.计算机中常用的二进制编码有哪些,请分别予以叙述。
6.(1)10和(-1)10的原码、反码和补码分别是多少?习题二1.单片机主要应用在什么领域?2. 89C51单片机包含哪些主要逻辑功能部件? 各有什么主要功能?3.89C51单片机EA端如何使用?4.什么是机器周期、指令周期?89C51指令周期、机器周期和时钟周期的关系如何?当主频为12MHz时,一个机器周期等于多少微秒?执行一条最长的指令需多少微秒?5.如何认识89C51存储器空间在物理结构上可划分为四个空间,而在逻辑上又可划分为三个空间?各空间的寻址范围、寻址方式是什么?6.89C51有哪些主要的特殊功能寄存器,分布在哪里?7.内部RAM低128B从功能和用途方面,可划分为哪三个区域?8.89C51内部RAM有几组工作寄存器?每组工作寄存器有几个工作寄存器?寄存器组的选择由什么决定?9.89C51的外部RAM和I/O口是如何编址的,如何寻址?10.89C51的程序存储器的寻址空间是多少,如何区别片内程序存储器和片外程序存储器的?11.89C51的位寻址区在哪里,位寻址空间是多少?12.什么是堆栈,什么是SP,89C51的堆栈位于什么地方,复位后堆栈指针初值是多少,一般将SP设置为多少?进栈、出栈时堆栈指针将怎样变化?13.单片机包括哪两种复位方式,在单片机应用系统中为何需要系统复位,复位后主要寄存器的状态如何?14.89C51的P3口各引脚的第二功能是什么?15.89C51有几种低功耗方式,如何进入和退出?习题三1.什么是指令,什么是指令系统?2.89C51总共有多少条指令,分为哪几类?3.89C51有哪些寻址方式,各自的寻址空间如何?4.说明下列指令中源操作数采用的寻址方式。
单片机实验 串口中断
![单片机实验 串口中断](https://img.taocdn.com/s3/m/eec067d826fff705cc170aee.png)
2、Proteus仿真
(1)在元件模式时,从元件库里找出本次实验需要用到的元器件,其元件名称和英文简写对应如下:
①51芯片AT89C51
②九针连接器COMPIM
③虚拟终端VIRTUAL TERMINAL
(2)打开Proteus 7 Professional应用程序,在其中找到元器件,按下图所示连接:
注意:
⑴双击设置九针连接器的Physical port为COM2,Virtual Baud Rate为9600如下图所示:
(2)安装虚拟驱动软件和串口调试助手,运行串口调试助手,选择发送的串口为COM1,键入要发送的字符或者数据,选择手动发送,打开串口,如下图所示。
(3)双击仿真电路图中的AT89C51并添加产生的hex文件,点击运行按钮“ ”后会自动弹出虚拟终端,在串口调试助手上手动发送数据Nice to meet you !具体仿真如下图所示:
三、实验操作步骤
1. 工程建立
①先建立一个该工程的文件夹,保存到要存放的路径,如放在D:\keil。
②打开Keil软件,先新建一个工程文件,点击“Project->New Project…”菜单。会弹出工程创建对话框。选择工程文件要存放的路径选择将工程安装在我们创建的D:\keil工程文件夹下面,并给该工程命名输入工程文件名,如chuankou最后单击保存。
③在弹出的对话框中选择CPU厂商及型号,选择好Atmel公司的AT89C51后,单击确定。在接着出现的对话框中选择“OK”。
④新建一个C51文件,单击左上角的New File,保存新建的文件,单击SAVE。
⑤在出现的对话框中输入保存文件名(注意后缀名必须为.C如chuankou.c),再单击“保存”。
第4章 MCS-51单片机中断、定时系统及串行数据通信
![第4章 MCS-51单片机中断、定时系统及串行数据通信](https://img.taocdn.com/s3/m/fafcfaf3998fcc22bcd10df2.png)
表4-2 中断源入口地址表 中断源 外部中断0 中断服务程序入口地址 0003H
定时器/计数器T0 外部中断1 定时器/计数器T1 串行口中断
000BH 0013H 001BH 0023H
单片机的两个相邻中断源中断服务程序入口地址 相距只有8个单元,一般中断服务程序容纳不下,因此 在该中断的入口地址处放一条长跳转指令LJMP,这 样就可以转到64KB的任何可用区域了。在2KB范围内 转移可用短跳转AJMP指令。
表4-1 同级中断源优先级排列顺序
中断源
外部中断0(IE0) 定时器/计数器T0中断(TF0) 外部中断1(IE1) 定时器/计数器T1中断(TF1)
同级内的优先级
最低级
串行口中断(RI+TI)
最高级
当单片机系统复位后,IE中各位均被清0,所有 中断源禁止;IP中各位均被清0,5个中断源均为低优 先级。
SET SET
SET
ET0 ET1
EA
;定时器/计数器0允许中断 ;定时器/计数器1允许中断
;CPU开中断
用字节操作指令 MOV IE,#8AH 或 MOV A8H,#8AH
(2)中断优先级控制寄存器(IP) MCS-51单片机系统的中断源有两个优先级,每 个中断源均可由中断优先级寄存器IP来设置优先级别。 IP的字节地址为0B8H,位地址为0B8H~0BFH。与 中断有关的控制位如下: 位地址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H
TMOD是定时器的工作方式寄存器,TCON是控制 寄存器,用于对T0和T1的管理和控制。
2.定时器/计数器的结构的工作原理 16位定时器/计数器的核心是一个加1计数器,如图 4-4所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*************************************************************************用定时器T0 或T1 模拟串行口程序。
最高波特率(12 clock):本程序收、发波特率相同。
11.059MHz -- 最高波特率收: 9600, 最低波特率:30030.000MHz -- 最高波特率收: 28800 最低波特率:30040.000MHz -- 最高波特率收: 38400 最低波特率:300...使用说明:1. 本程序使用一个定时器和任意2 个I/O 口模拟一个串行口。
2. 1位起始位,8位数据位,1位停止位。
发数据位时先发低位。
3. 支持半双工通讯。
收、发波特率相同。
4. 应把定时器中断优先级设置为最高级。
5. 本程序每接收一个字节后就把它放到一个队列缓冲区中(也可使用环行缓冲区),待缓冲区满后,将缓冲区中的内容原样发回。
这是为了测试多字节连续收发的能力和简化程序。
实际应用中应防止缓冲区溢出。
6. 由接收转换到发送时要先调用soft_send_enable ();由发送转换到接收时要先调用 soft_receive_enable ()。
7. 发送最后一个字节后如果要立刻转为接收,必须等待最后一个字节后发送完毕 w hile ( rs_f_TI == 0) ; // 等待最后一个字节发送完毕**************************************************************************编程说明:----------------发送:由接收转换到发送时要先调用soft_send_enable (), 它为发送做初始化的工作。
以后就可以调用rs_send_byte () 启动发送一个字节的过程。
发送口平时为高电平,rs_send_byte ()函数使发送口变为低电平开始发送起始位; 同时设置和启动定时器,为发送数据位在预定的时刻产生定时器中断。
发送数据位和停止位都在定时器的中断服务程序中进行。
中断服务程序中处理4 种情况:发送数据位、发送停止位、发送完毕、处理错误。
----------------接收:由发送转换到接收时要先调用soft_receive_enable (), 它为接收做初始化的工作。
定时器以3 到4 倍波特率的频率产生中断(参见rs_TE ST0 的定义)检测P C 机发送的起始位。
一旦检测到起始位,立刻把定时器产生中断的频率调整到与波特率相同,准备在下一个定时器中断中接收第1 个数据位。
中断服务程序中处理以下情况:1. 收到的是P C 机发送的起始位: 调整定时器产生中断的频率与波特率相同。
2. 收到第8 位数据位: 存储接收到的字节。
3. 收到第1--7 位数据位: 存储到收、发移位暂存器。
4. 收到停止位: 调用soft_recei v e_enable(),检测PC 机发出的下一个起始位。
5. 处理出错的情况。
**************************************************************************/#i nclude <reg52.h>sfr16 DP TR = 0x82;typedef unsigned char INT8U;typedef unsigned int INT16U;#define YE S 1#define NO 0//定义使用哪个定时器, 只可定义一个//#define TIMER_0#define TIMER_1//定义串口收、发送管脚。
sbit rs_TXD = P2^1;sbit rs_RXD = P2^0;//根据定时器确定参数#ifdef TIMER_0#define TMOD_AND_WORD 0xF0;#define TMOD_TIME_MODE 0x01;#define TMOD_COUNT_MODE 0x05; //设置计数模式位sbit TCON_ENABLE_TIMER = TCON^4;sbit TCON_TFx = TCON^5; //中断标志位sbit IE_ETx = IE^1; //中断允许位为E T0sbit IP_PTx = IP^1; //中断优先级sfr rs_timerL = 0x8A; //TL0sfr rs_timerH = 0x8C; //TH0#endif#ifdef TIMER_1#define TMOD_AND_WORD 0x0F;#define TMOD_TIME_MODE 0x10;#define TMOD_COUNT_MODE 0x50; //设置计数模式位sbit TCON_ENABLE_TIMER = TCON^6; //sbit TCON_TFx = TCON^7; //中断标志位sbit IE_ETx = IE^3; //中断允许位为E T1sbit IP_PTx = IP^4; //中断优先级sfr rs_timerL = 0x8B; //TL1sfr rs_timerH = 0x8D; //TH1#endifINT8U bdata rs_BUF; //串行收、发时用的移位暂存器。
sbit rs_BUF_bit7 = rs_BUF^7; //移位暂存器的最高位。
INT8U rs_shift_count; //移位计数器。
INT8U bdata rsFlags;sbit rs_f_TI = rsFlags^0; //0:正在发送; 1: 一个字符完毕sbit rs_f_RI_enable = rsFlags^1; //0:禁止接收; 1:允许接收sbit rs_f_TI_enable = rsFlags^2; //0:禁止发送; 1:允许发送//选择以下一个晶体频率//#define Fosc 6000000 //6MHz#define Fosc 11059200 //11.059MHz//#define Fosc 12000000//#define Fosc 18432000//#define Fosc 20000000//#define Fosc 24000000//#define Fosc 30000000//#define Fosc 40000000//选择以下一个波特率://#efine Baud 300 //11.059MHz时,baud 最低为300//#define Baud 1200//#define Baud 2400//#define Baud 4800#define Baud 9600//#define Baud 14400//#define Baud 19200//#define Baud 28800//#define Baud 38400//#define Baud 57600//收、发一位所需定时器计数#define rs_FULL_BIT0 ((Fosc/12) / Baud)#define rs_FULL_BIT (65536 - rs_FULL_BIT0)#define rs_FULL_BIT_H rs_FULL_BIT >> 8 //收、发一位所需定时器计数高位#define rs_FULL_BIT_L (rs_FULL_BIT & 0x00FF) //收、发一位所需定时器计数低位//检测起始位的时间间隔所需定时器计数#define rs_TE ST0 rs_FULL_BIT0 / 4 //波特率较低时可以除以3 或除以2#define rs_TE ST ((~rs_TE ST0))#define rs_TE ST_H rs_TE ST >> 8 //高位#define rs_TE ST_L rs_TE ST & 0x00FF //低位//发送起始位所需定时器总计数#define rs_START_BIT 0xFFFF - (Fosc/12/Baud) + 0x28#define rs_START_BIT_H rs_START_BIT >> 8 //发送起始位所需定时器计数高位#define rs_START_BIT_L rs_START_BIT & 0x00FF //发送起始位所需定时器计数低位#define rs_RE CEIV E_MAX 128 //最大接收长度INT8U idata rs232buffer[rs_RE CEIV E_MAX]; //收、发缓冲区INT16U ReceiveP oint; //接收数据存储指针void soft_rs232_interrupt( void );#ifdef TIMER_0void timer0 (void) interrupt 1 using 3{if (rs_RXD == 0 | rs_shift_count > 0){ soft_rs232_interrupt(); }else{rs_timerH = rs_TE ST_H;rs_timerL = rs_TE ST_L;}}#endif#ifdef TIMER_1void timer1 (void) interrupt 3 using 3{if (rs_RXD == 0 | rs_shift_count > 0){ soft_rs232_interrupt(); }else{rs_timerH = rs_TE ST_H;rs_timerL = rs_TE ST_L;}}#endif/***************************************/void soft_rs232_init (void) //串口初始化{TCON_ENABLE_TIMER = 0; //停止定时器TMOD &= TMOD_AND_WORD;TMOD |= TMOD_TIME_MODE;rs_RXD = 1; //接收脚置成高电平rs_TXD = 1; //发射脚置成高电平IP_PTx = 1; //置中断优先级为高IE_ETx = 1; //允许定时器中断}void soft_receive_init() //监测起始位{TCON_ENABLE_TIMER = 0; //停止定时器rs_timerH = rs_TE ST_H;rs_timerL = rs_TE ST_L;rs_shift_count = 0;TCON_ENABLE_TIMER = 1; //启动定时器}void soft_receive_enable() //允许接收{rs_f_RI_enable = 1; //允许接收rs_f_TI_enable = 0; //禁止发送soft_receive_init(); //监测起始位, RXD 下降沿触发接收字节过程. }void soft_send_enable (void) //允许发送{TCON_ENABLE_TIMER = 0; //停止定时器rs_f_TI_enable = 1; //允许发送rs_f_RI_enable = 0; //禁止接收rs_shift_count = 0; //清移位计数器rs_f_TI = 1; //发送一个字符完毕标志TCON_ENABLE_TIMER = 1; //启动定时器}void soft_rs232_interrupt( void ){/************************ 接收****************************/if (rs_f_RI_enable == 1){if (rs_shi f t_count == 0) //移位计数器==0, 表示检测到起始位的起点{if ( rs_RXD == 1 ){soft_recei v e_enable (); //起始位错, 从新开始}else{//下次中断在数据位或停止位中的某时刻发生rs_timerL += rs_FULL_BIT_L + 0x10;rs_timerH = rs_FULL_BIT_H;rs_shi f t_count++;rs_BUF = 0; //清移位缓冲变量}}else{rs_timerL += rs_FULL_BIT_L; //下次中断在数据位或停止位中发生rs_timerH = rs_FULL_BIT_H;rs_shi f t_count++; //2--9:数据位10:停止位if ( rs_shi f t_count == 9){rs_BUF = rs_BUF >> 1; //接收第8位rs_BUF_bit7 = rs_RXD;if( Recei v eP oint < rs_RECEIVE_MAX){ //保存收到的字节rs232buffer[Recei v eP oint++] = rs_BUF;}else{rs_f_RI_enable = 0; //缓冲区满, 禁止接收}}else{if (rs_shi f t_count < 9 ) //收到的是数据位1 -- 7{rs_BUF = rs_BUF >> 1;rs_BUF_bit7 = rs_RXD;}else{ //收到停止位,继续检测P C 机发出的下一个起始位soft_recei v e_init();}}}TCON_TFx = 0; //清定时器中断标志}else{/************************ 发送****************************/if (rs_f_TI_enable == 1){rs_timerL += rs_FULL_BIT_L;//下次中断在数据位的末尾时刻rs_timerH = rs_FULL_BIT_H;rs_shi f t_count--; //0:停止位末尾时刻到//1:发送停止位//2--9:发送数据位if (rs_shi f t_count > 9) //错误状态{rs_shi f t_count = 9;rs_BUF = 0xFF;}if (rs_shi f t_count > 1) //2--9:发送数据位{ACC = rs_BUF;ACC = ACC >> 1;rs_TXD = CY;rs_BUF = ACC;}else{if (rs_shi f t_count == 0) //0:停止位末尾时刻到{rs_TXD = 1;rs_f_TI = 1; //已发送完毕一个字节}else{rs_TXD = 1; //1:发送停止位}}}}}//由收转到发时,要先调用soft_send_enable ()void rs_send_byte(INT8U SendByte) //发送一个字节{w hile ( rs_f_TI == 0); //等待发送完毕前一个字节rs_TXD = 1;rs_timerL = rs_ST ART_BIT_L; //下次中断在起始位的末尾时刻rs_timerH = rs_START_BIT_H;rs_BUF = SendByte;rs_shift_count = 10;rs_TXD = 0; //发送起始位rs_f_TI = 0; //清已发送完毕一个字节的标志}void initiate_MCU (void) //系统初始化{soft_rs232_init(); //串口初始化E A = 1; //开中断}void main (void){//首先发送128 个字节00H--7FH, 然后等待P C 机发送的数据。