版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、两个例子1.灯闪烁.swf 2.asm8led二、89S51芯片引脚图(P61) 40个:1.电源引脚 2.I/O引脚 3.晶振引脚 4.控制引脚图3-2-1 89S51 MCS-51封装和引脚分配(a)双列直插式封装)三、存储器的组织结构(P 51)1.存储器配置 图3-2-1 MCS-51 存储器地址分配2.内部RAM (1)工作寄存器区 (2)位寻址区 (3)一般RAM区3.特殊功能寄存器 (1)累加器ACC(2)B寄存器 (3)程序状态字寄存器PSW 图3-1-3 8051内部RAM结构图 表3-1-3 PSW中各位的定义位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW
2、.2PSW.1PSW.0位标志CYACFORS1RS0OV未用P 表3-1-4 RS1、RS0与寄存器组对应关系RS1RS0寄存器组地址000组0007H011组080FH102组1017H113组181FH (4)堆栈指针寄存器SP(5)数据指针寄存器DPTR4.程序存储器 程序执行流程图表6-1-2 8031/8051中断入口地址表 复位入口地址0000H外部中断0服务程序入口地址0003H定时器T0中断服务程序入口地址000BH外部中断1服务程序入口地址0013H定时器T1中断服务程序入口地址001BH串行口中断服务程序入口地址0023H四、并行I/O口(P200) 1P0口 图7-2-
3、1 P0口一位的结构P0口有两种方式:通用I/O口和地址/数据总线。(1)通用I/O口的工作过程 MUX接通B端,V1韯止AP0输出数据时: 上拉电阻BP0输入数据时:分为读引脚和读锁存器两种方式a.读引脚操作:先将锁存器写1,端口输入指令:MOV A,P0b.读锁存器操作:读修改写类指令:ANL P0,A (2)地址/数据总线的工作过程 MUX接通A端,低8位地址和数据 表2.7 专用寄存器复位状态(P23)专用寄存器复位状态专用寄存器复位状态ACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0P3FFHSCON00H
4、IP×××00000BSBUF不定IE0××00000BPCON0×××0000BTMOD00H2P1口 有上拉电阻 图7-2-2 P1口一位的结构 3P2口 高8位地址 图7-2-3 P2口一位的结构4P3口 第二功能 图7-2-4 P3口一位的结构表2.1 P3口线的第二功能(P10)口线第二功能信号第二功能P30RXD串行数据输入P31TXD串行数据输出P32外部中断0请求输入P33外部中断1请求输入P34T0定时器/计数器0外部输入P35T1定时器/计数器1外部输入P36外部RAM写选通P37外部RAM读选
5、通五、寻址方式(P30) MCS-51单片机指令系统提供了7种不同的寻址方式。1立即寻址方式 操作数是以指令字节的形式存放在程序存储器中。 书写时,在立即数面前加“#”标志。 MOV A,#20HMOV DPTR, # data16。2直接寻址方式 直接寻址是指在指令中直接给出操作对象的存储单元地址。直接寻址方式的寻址范围包括:内部RAM低128单元、特殊功能寄存器和一些程序控制指令。(位地址空间)例如:MOV A,3AH。该指令将内部RAM中3AH单元的内容送给累加器A,若(3AH)=20H,执行示意图如图3.2。执行结果A=20H。另有(A)=20HMOV A,P0MOV A,80H 图3
6、.2 “MOV A,3AH”示意图 3寄存器寻址方式寄存器寻址就是操作对象放在寄存器中。 寄存器寻址方式的寻址范围包括:四个工作寄存器组共32个通用寄存器、部分特殊功能寄存器。(A, B, DPTR, CY)例如:MOV A,R0。 该指令把寄存器R0的内容送到累加器A中,若R0=20H,执行过程如图3.3。指令执行后A=20H。图3.3 “MOV A,R0”指令示意图4寄存器间接寻址方式 寄存器间接寻址就是操作对象的存储器单元地址存放在寄存器中。用“”和寄存器符号表示。(R0,R1,DPTR,SP)寄存器间接寻址范围包括:内部RAM低128字节、外部RAM 64KB、堆栈操作指令。例如:设寄
7、存器R1 = 60H,A = 20H,执行指令ADD A, R1。若(60H)=10H,执行过程如图3.4。执行结果A=30H。图3.4 “MOV A,R1”指令示意图5相对寻址方式 相对寻址是指以指令中给出的操作数作为程序转移的偏移量。书写时,以“rel”表示地址偏移量。目标地址表示为:目标地址= 转移指令首地址+ 转移指令字节数+ rel 目标地址=当前PC值+ rel例如:JC 3AH。 (JC的指令代码是40H,见P210)执行过程如图3.5。图3.5 “JC 3AH”指令示意图6变址寻址方式(又称基址寄存器加变址寄存器间接寻址) 指令提供了以DPTR或PC为基址、以累加器A 为变址,
8、通过将两寄存器的内容相加形成的16位数据,作为操作对象存储单元的地址。 51系列单片机的变址寻址只能对程序存储器进行寻址,而且变址寻址指令只有三条: MOVC A, A + DPTR MOVC A, A + PC JMP A + DPTR例如:MOVC A, A + DPTR。若A=3AH,DPTR=3F30H,那么操作对象存储单元的地址为3F6AH,若(3F6AH)=5CH,执行过程如图3.6。则执行结果为A=5CH。图3.6 “MOVC A,A+DPTR”指令示意图7位寻址方式 指令给出的操作数是内部数据存储器中的可寻址位。书写时,有四种表示方法:直接使用位地址、位名称表示法、单元地址加位
9、表示法、专用寄存器名称加位表示法。 51单片机的位寻址范围包括:内部RAM中的位寻址区、特殊功能寄存器的可寻址位。 例如:ANL C,21H.5。该指令将进位标志CY和内部RAM的21H单元的第5位进行逻辑与运算,结果保存到C中。六、指令系统(P33)1.描述指令的一些符号的意义: ·R n (n = 07):表示当前工作寄存器组R0R7中的某一个寄存器。 ·R i(i= 01): 可以作间接寻址的寄存器,只能是R0和R1两个寄存器,“”是间接寻址标识符。 ·direct: 内部RAM的8位地址,可以是内部RAM的单元地址(00H7FH)或特殊功能寄存器地址。 &
10、#183;# data:8位立即数,其中“#”是立即数标识符。 ·# data16:16位立即数。 ·addr11:11位目的地址。用于ACALL和AJMP指令中,转移范围为2KB。 ·addr16:16位目的地址。用于LCALL和LJMP指令中,转移范围为64KB。 ·rel:相对转移指令中的8位偏移地址,范围是-128+127。 ·DPTR:数据指针,用作16位的地址寄存器。 ·bit:内部RAM或特殊功能寄存器中的直接寻址位。 ·rrr:在操作码中,表示R0R7寄存器的编码。 ·A:累加器,写作“A”时,是寄
11、存器寻址;写作“ACC”时,是直接寻址。 ·B:特殊功能寄存器,用于MUL和DIV指令中。 ·/ :位操作数的前缀,表示对该位操作数取反。 ·(存储单元地址):表示某存储单元的内容。 ·(间址寄存器):由寄存器间接寻址的单元中的内容。2.数据传送指令(29条)(1)以累加器A为目的操作数的指令(4条) MOV A,#data Rn direct Ri(2)以寄存器Rn为目的操作数的指令(3条) MOV Rn, ,#data direct A(3)以直接地址为目的操作数的指令(5条) MOV direct, #data Rn direct2 Ri A(4)
12、以间接地址为目的操作数的指令(3条) MOV Ri, #data direct A(5)十六位数据传送指令(1条) MOV DPTR,#data16(6)查表指令(2条) MOVC A,ADPTR APC(7)累加器A与片外RAM传送指令(4条) MOVX A,DPTR Ri MOVX DPTR,A MOVX Ri,A(8)栈操作指令(2条) PUSH direct POP direct(9)交换指令(5条) XCH A,Rn direct Ri XCHD A,Ri SWAP A3.算术运算指令(24条)(1)不带进位加法指令(4条) ADD A,Rn direct Ri #data(2)带进
13、位加法指令(4条) ADDC A,Rn direct Ri #data(3)带借位减法指令(4条) SUBB A,Rn direct Ri #data(4)乘法指令(1条) MUL AB(5)除法指令(1条) DIV AB(6)加1指令(5条) INC A Rn direct Ri DPTR(7)减1指令(4条) DEC A Rn direct Ri (8)十进制调整指令(1条) DA A4.逻辑运算指令(24条)(1)逻辑与运算指令(6条)ANL A,Rn Ri direct # data ANL direct,A # data (2)逻辑或运算指令(6条)ORL A,Rn Ri direc
14、t # data ORL direct,A # data (3)逻辑异或运算指令(6条)XRL A,Rn Ri direct # data XRL direct,A # data (4)累加器清0和取反指令(2条) CLR A CPL A(5)循环移位指令(4条) RR A RRC A RL A RLC A5.程序控制指令(22条)(1)无条件转移指令(4条) 相对转移指令 SJMP rel 绝对转移指令 AJMP addr11 长转移指令 LJMP addr16 间接转移指令 JMP ADPTR (2)条件转移指令(13条) 累加器判零转移指令 JZ rel JNZ rel 比较转移指令 C
15、JNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE Ri,#data,rel 减1不为0转移指令 DJNZ Rn,rel DJNZ direct,rel 位控制转移指令 JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel (3)子程序调用和返回指令(4条) 绝对调用指令 ACALL addr11 长调用指令 LCALL addr16 返回指令 RET RETI(4)空操作指令(1条) NOP6.位操作指令(12条)(1)位传送指令(2条) MOV C,bit MOV bit,C(
16、2)置位复位指令(4条) CLR C bit SETB C bit(3)位逻辑运算指令(6条) ANL C,bit ANL C, / bit ORL C,bit ORL C, / bit CPL C CPL bit7.伪指令(P54)(1)赋值伪指令EQU 指令格式:<符号名>EQU <赋值项> 例如:TTY EQU 1000H ;定义标号TTY 值为1000HLOOP EQU TTY ;定义标号LOOP 值为标号TTY 的值(2)定义字节伪指令DB 指令格式: <标号> DB <表达式表>功能:把表达式表中的字节数据存入从标号开始的连续存储单元
17、中。例如:TAB: DB 32H,33H,34H,35H,36H,37H 表示把字节数据存入由标号TAB开始的连续存储单元中。(3)定义字伪指令DW指令格式:<标号> DW <表达式表>功能:把表达式表中的16 位数据存入由标号开始的连续存储单元,低地址单元存放高字节,高地址单元存放低字节。例如:ABC: DW 1234H,100H 表示从ABC 地址开始按顺序存入12H,34H,01H,00H。(4)存储区定义伪指令DS 指令格式:<标号>DS <表达式>功能:通知汇编程序,从指定的地址开始,保留指定数目的字节单元作为存储区,供程序运行使用。例
18、如:ADDR1: DS 20H 指令表示从标号ADDR1代表的地址开始,保留20H个存储单元。(5)位定义伪指令BIT 指令格式:<符号名> BIT <位地址> 功能:给符号名赋以位地址。 例如:AA BIT 1FH ;用符号名AA代表位地址1FH。(6)设置起始地址伪指令ORG 指令格式:<标号>ORG <表达式>功能:指定目标程序或数据块在存储器中的起始地址,其中,表达式通常为16 位地址码。例如:ORG 1000HSTART:MOV A,0HORG 伪指令通知汇编程序,由START开始的程序段,其起始地址为1000H。如果没有设置起始地址,
19、则目标程序从0000H单元开始存放。(7)汇编结束伪指令END指令格式:END功能:用于终止源程序的汇编工作。七、程序设计举例(P58)例3.10 双字节加法程序设: 被加数存放在内部RAM的30H (高字节)、31H (低字节)单元中,加数存放在内部RAM 的32H、33H 单元中,运算结果存放在30H、31H中,进位位存放在位寻址区的00H位中。分析:由于MCS-51指令系统中只有单字节加法指令,因此多字节加法必须从低位字节开始分字节相加。其中最低字节使用ADD指令,其余字节使用带进位加法指令ADDC。双字节加法程序如下: ORG 0100H ;程序存放在0100H 开始的单元START:
20、 MOV R0, # 31H ;将被加数低字节地址送R0MOV R1, # 33H ;将加数低字节地址送R1MOV A, R0 ;将被加数低字节内容送AADD A, R1 ;低字节数相加MOV R0,A ;低字节数之和存入31H 单元DEC R0 ;R0 指向被加数高字节DEC R1 ;R1 指向加数高字节MOV A, R0 ;被加数高字节送AADDC A,R1 ;高字节数相加MOV R0,A ;高字节数之和存入30H 单元MOV 00H,C ;进位送00H 位保存SJMP ;动态停机END ;源程序结束 例3.11 将内部RAM 1AH单元中一压缩BCD数转换成二进制数。 分析:该题的关键是
21、如何取出压缩BCD数的十位数和个位数。实现转换的程序段如下: MOV A,1AH ;将BCD 数送累加器ASWAP A ;交换BCD 数的个位数和十位数ANL A, # 0FH ;取出BCD 数的十位数MOV B, # 0AH ;立即数10 送寄存器BMUL AB ;BCD 数的十位数乘以10ANL 1AH, # 0FH ;取出BCD 数的个位数ADD A,1AH ;十位数×10+个位数MOV 40H,A ;转换结果送40H单元 例3.12 编程实现下图的逻辑功能。其中20H、2FH、2AH是位地址。 分析:逻辑电路的功能是P1.0=程序如下: MOV C,20H ;20H 位送CY
22、ANL C,2FH ;CY 逻辑与2FH 位CPL C ;CY 取反ORL C,2AH ;CY 逻辑或2AH 位MOV P1.0,C ;结果送P1.0例3.13 双字节乘法程序设两个乘数分别放在R0R1和R2R3中,乘积放入R4R5R6R7中。分析:双字节乘法实质上是相应字节相乘后对应字节相加,其计算过程如下:双字节乘法程序段如下:START:MOV A,R1MOV B,R3MUL AB ;R1× R3MOV R7,AMOV R6,B ;R1× R3存入R6R7中MOV A,R0MOV B,R3MUL AB ;R0× R3ADD A,R6MOV R6,A ;R0&
23、#215; R3低字节送R6MOV A,B ;R0× R3高字节送AADDC A,# 0H ;加CYMOV R5,A ;R0× R3存入R5R6中MOV A,R1MOV B,R2MUL AB ;R1× R2ADD A,R6MOV R6,A;R1× R2低字节累加进入R6MOV A,B ;R1× R2高字节送AADDC A,R5MOV R5,A ;R1× R2累加存入R5R6CLR AADDC A,# 0HMOV R4,A ;(R1× R2)高+ (R0× R3)高产生的进位存入R4MOV A,R0MOV B,R2M
24、UL AB ;R0× R2ADD A,R5MOV R5,A ;R0× R2低字节送R5MOV A,B ;R0× R2高字节送AADDC A,R4MOV R4,A ;R0× R2存入R4R5 SJMP $ END 例3.14 比较内部RAM 30H和31H单元中无符号数的大小,使得30H单元存放大数,31H单元存放小数。 分析:流程图如下:程序: ORG 1000H START: CLR CMOV A,30HSUBB A,31HJNC DONE ;若无借位,即(30H)(31H)时转DONEMOV A,30HXCH A,31H ;有借位,即(30H)<
25、;(31H),交换(30H)与(31H)MOV 30H,ADONE: SJMP DONE END 例3.15 内部RAM BLOCK单元中存储一个不带符号数,判断这个数的大小,若小于MIN,则令B = 1;若大于等于MAX,则令B=2;否则,令B=3。 分析:流程图如下: 程序: ORG 1000H START: MOV A,BLOCK ;将BLOCK中内容送ACJNE A, # MIN,NEXT1 ;与MIN 比较,无论是否相等转NEXT1NEXT1: JNC DO1 ;AMIN 转DO1MOV B, # 01H ;A <MIN,则令B= 1SJMP STOP ;转向结尾DO1: CJ
26、NE A, # MAX,NEXT2 ;与MAX 比较NEXT2: JNC DO2 ;AMAX 转DO2MOV B, # 03H ;MINA <MAX,则令B = 3SJMP STOPDO2: MOV B, # 02H ;AMAX,则令B = 2STOP: SJMP STOP ;动态停机 END例3.16 假定有三个分支程序段,各分支程序段的功能依次是从内部RAM取数,从外部RAM低256 B范围取数和从外部RAM 64 KB范围内取数。R0中存放内部RAM地址或外部RAM的低8位地址,R1中存放外部RAM的高8位,R3中存放分支序号值(0,1,2)。根据R3的内容转入不同的处理程序。 分
27、析:利用散转指令查表转移的方法:在程序中建立一个转移表JMPTBL,将分支程序入口地址与转移表首地址的差值按顺序存放其中。将转移表首地址JMPTBL送DPTR,分支序号送A。查表就可以得到相应分支程序入口地址与转移表首地址之差,然后使用JMP A+ DPTR 将分支程序的入口地址送PC,实现程序转移。 程序: MOV A,R3 ;取分支号MOV DPTR, # JMPTBL ;赋转移表首地址MOVC A, A+ DPTR ;查取转移偏移量JMP A + DPTR ;散转JMPTBL:DB MEM0 - JMPTBL ;定义转移偏移量表DB MEM1-JMPTBLDB MEM2 - JMPTBL
28、MEM0: MOV A, R0 ;从内部RAM 读数RETMEM1: MOVX A, R0 ;从外部RAM 低256B 读数RETMEM2: MOV DPL,R0 ;从外部RAM 64KB读数MOV DPH,R1MOVX A, DPTRRET例3.17 编程统计累加器A中“1”的个数。分析:流程图: 程序:MOV R1, # 0 ;计数器R1清0PUSH ACC ;保护ACCLOOP1: JZ DONE ;若A = 0,程序结束CLR C ;进位位清0RLC A ;累加器A带进位循环左移一位JNC LOOP1 ;CY = 0,则继续循环INC R1 ;CY = 1,则计数器R1加1SJMP L
29、OOP1DONE: POP ACC ;恢复ACCSJMP END 例3.18 计算内部RAM 40H 单元开始存放的40 个8 位无符号数之和,将结果存放在内部RAM 7EH (高位)和7FH (低位)单元。 分析:流程图:程序: MOV 7EH, # 0MOV 7FH, # 0 ;累加和单元清0MOV R6, # 28H ;计数器R6 置初值MOV R0, # 40H ;设置间址指针LOOP: MOV A,7FHADD A, R0 ;累加一个字节单元MOV 7FH,ACLR AADDC A,7EH ;加累加时产生的进位MOV 7EH,AINC R0 ;修改间址指针DJNZ R6,LOOP ;
30、计数器R6 减1 不为0,则继续循环SJMP 例3.19 从内部RAM 30H 单元开始存放了20 个数,找出其中的最大数。 分析:求极值问题是一个比较的过程。流程图如下:程序: START: MOV R0, # 30H ;间址指针R0置初值MOV R6, # 13H ;计数器R6置初值MOV A, R0 ;读第一个数LOOP: INC R0MOV 20H, R0 ;读下一个数CJNE A,20H,LOOP1 ;两数比较LOOP1: JNC LOOP2 ;A中内容大则转移,继续循环MOV A, R0 较大数送入ALOOP2: DJNZ R6,LOOP ;R6 -1不为0,则继续循环SJMP 例
31、3.20 假设在内部RAM 41H4AH和51H5AH单元分别存放10个无符号字节数,求两组无符号字节数据的最大值之差。解:设计一个子程,实现从一组字节数据中找出最大值,结果保存到累加器A中。用R0存放数据区首地址,R7存放数据个数,通过循环比较,找出数据区中的最大数。查找算法的子程序流程如图所示。程序清单如下:ORG 0100HMAIN:MOV R7,#0AH ;循环计数器R7置初值MOV R0,#41H ;设置数据区地址指针ACALL MAX;调用查找子程序MOV 20H,A ;保存最大值MOV R7,#0AH;设置循环计数器R7MOV R0,#51H;设置数据区地址指针ACALL MAX
32、;调用查找子程序CJNE A,20H,NEXT;比较两数大小NEXT: JNC RESULTXCH A,20H;交换两数CLR CRESULT:SUBB A,20H;计算两数之差SJMP $ORG 0200H;子程序MAX: CLR A;累加器清0LOOP: MOV B,R0CJNE A,B,NEXT;比较两数大小NEXT: JNC CONT;若CY=0,则AB,转移MOV A,R0;CY=1,则AB,保存较大数到累加器ACONT:INC R0;修改数据指针R0DJNZ R7,LOOPRETEND八、中断系统(P80)1中断系统结构图4.2 89S51中断系统结构(1)中断源 89S51的5个
33、中断源分别为:2 个外部中断(由INT0、INT1引脚输入中断请求信号)、2个片内定时器/ 计数器溢出中断(T0、T1)、1个片内串行口中断(TX发送、RX接收)。(2)中断请求标志寄存器 中断系统设置有中断请求标志寄存器,它由定时器控制寄存器(TCON)和串行口控制寄存器(SCON)的若干位构成,如图所示:图4.3 中断标志位当某一中断源发出有效的请求信号时,相应的标志位置1,否则为0。(3)中断允许控制寄存器IE 为了有效地控制中断过程,中断系统设置有中断允许控制寄存器IE,它控制着中断的允许与禁止。IE结构如图所示。图4.4 中断允许控制寄存器IE(4)中断优先级控制寄存器IP 89S5
34、1有2级中断优先级,每一个中断源都可以软件设置为高级中断或低级中断,由中断优先级控制寄存器IP控制。IP寄存器结构如图所示。图4.5 中断优先级控制寄存器IP(5)中断硬件查询电路 若CPU同时接收到两个不同优先级的中断时,则先处理高级中断。若CPU同时接收的是多个同级中断时,则通过内部硬件查询逻辑电路,按查询顺序确定应先响应哪一个中断请求。在同级中断中,查询顺序(由高到低)是:外部中断0、定时器T0 中断、外部中断1、定时器T1 中断、串行口中断。 2.中断的处理过程(1)中断查询 CPU在每个机器周期结束时查询中断源是否有中断申请,若没有,则继续当前任务;若有,则自动设置相应中断请求标志位
35、。(2)中断的响应条件 只有同时满足以下条件时,才会响应中断。 ·中断请求标志为1。 ·CPU中断开放,即EA = 1且相应中断允许位= 1。 ·无同级或更高优先级中断正在被服务。 ·若现行指令为中断返回RETI或访问IE、IP寄存器指令,必须执行完该指令和紧接着的下一条指令后才能响应中断。(3)响应中断 ·设置相应的优先级状态触发器。 ·保护现行程序断点地址。 ·进入指定的中断服务程序入口地址。 CPU响应中断,首先置位相应的优先级状态触发器,指示开始处理中断的优先级别,以阻断同级和低级的中断,并清零中断请求源标志(指TF
36、1、TF0及边沿触发的外部中断IE1、IE0)。然后CPU执行一个硬件子程序调用,把当前程序计数器PC的内容压入堆栈(但没有自动保存PSW及其它寄存器的内容),同时根据提出申请的中断源的类别,把相应的中断服务程序的入口地址装入PC中。(4)执行中断服务程序 在中断服务程序中不仅要完成相应的服务任务,而且要考虑现场保护与现场恢复,以便保护主程序中不应破坏的数据。(5)中断返回 在中断服务程序的结尾必须有一条中断返回指令RETI。 作用:·清除响应时设置的优先级状态触发器 ·恢复主程序断点地址,即把堆栈的内容送给PC(6)中断请求的撤除 CPU响应某中断请求后,在返回之前必须撤
37、除中断请求。 例:外部中断的应用 ORG 0000H LJMP MAIN ORG 0013H LJMP SEINT1 MAIN: SETB IT1 SETB EX1 SETB EA ORL P1,#OFFH LOOP:SJMP LOOP SEINT1:MOV A,P1 RETI九、定时器/计数器(P89)89S51单片机内部集成有两个16位定时器/计数器T0、T1。1.定时器/计数器T0、T1的结构(1)定时器的总体结构 图4.10 89S51单片机定时器/计数器T0、T1的结构(2)定时器方式寄存器TMOD 特殊功能寄存器TMOD用于控制定时器/ 计数器的启动方式、计数脉冲源的选择、工作方式
38、的选择。此寄存器只能字节寻址,复位时,TMOD=00H。其各位含义如图所示。图4.11 TMOD的各位功能(3)定时器控制寄存器TCON此寄存器复位时,TCON=00H。其各位含义如图所示。图4.12 TCON各位功能2.定时器/计数器T0、T1的工作方式(1)方式0图4.14 T0方式0原理图工作原理: ·TL0的低5位进位时,TH0加1,TH0最高位进位(即溢出)时,设置TF0=1,申请中断。若CPU 响应中断,系统自动对TF0复位。 定时时间t与计数器的位数、设置的计数初值、时钟频率有关,计算公式如下:t=(计数最大值-x初值)×机器周期=(-x初值)×12
39、/fosc其中 x初值:时间常数;fosc:时钟频率若fosc=12MHz,则方式0的最大定时时间T=(-0)×12/ fosc = 8.192 ms例1:若设置定时器T1工作在方式0、定时功能,定时时间t=5 ms,启动由TR1控制。写出初始化程序。分析:方式0:设置M1、M0=00;定时功能:设置C/=0;TR1启动:设置GATE=0;利用计算公式可设置TH1=63H,TL1=18H。初始化程序:START: MOV TMOD, # 00H ;设置T1 方式0,定时功能MOV TH1, # 63H ;送时间常数MOV TL1, # 18HSETB TR1 ;启动T1工作(2)方式
40、1 图4.15 T0方式1原理图工作原理: ·T0、T1定时器/ 计数器的方式1相同,为16位计数器结构。 ·方式1与方式0基本工作过程相同。定时时间计算公式:t=(计数最大值-x初值)×机器周期=(-x初值)×12/fosc若fosc=12MHZ,则方式1的最大定时时间T=(-0)×12/ fosc = 65.536 ms例2 若设置定时器T0 工作在方式1、计数功能,计数数目为10 000 次,启动由INT0引脚控制。写出初始化程序。分析:方式1:设置M1、M0=01;计数功能:设置C/=1;控制启动:设置GATE=1;利用计算公式可设置T
41、H0=0D8H,TL0=0F0H。初始化程序:START: MOV TMOD, # 0DH ;设置T0方式1,计数功能MOV TH0, # 0D8H ;送计数初值MOV TL0, # 0F0HSETB TR0 ;置TR0 = 1,T0启动由INT0引脚控制(3)方式2图4.16 T0方式2原理图工作原理:·T0、T1 定时器/ 计数器的方式2相同,为可重载时间常数的8位计数器结构。 ·在方式2下,TL0作为8 位计数器,TH0作为重载时间常数寄存器,当TL0计满溢出后,设置TF0 = 1申请中断,同时将TH0中的数据自动装载到TL0中重新工作。定时时间计算公式:t=(计数最
42、大值-x初值)×机器周期=(-x初值)×12/fosc若fosc=12MHZ,则方式2的最大定时时间T=(-0)×12/ fosc = 0.256 ms(4)方式3图4.17 T0方式3原理图工作原理:·定时器/ 计数器T0、T1方式3的工作情况差别很大,T1设置为方式3时,停止工作;T0设置为方式3时,分成两个独立的8位定时器/ 计数器TL0和TH0。 ·TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器T0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。 ·TH0只能作为定时器使用,它的启动仅由原来
43、T1的启动位TR1控制,当TH0溢出时,置位TF1标志申请中断,中断服务程序入口为001BH。十、串行口(P103)1.串行通信的基本概念(1)并行通信与串行通信 计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。 ·并行通信是指单位信息(通常为一个字节)的各位数据同时传送。它是依靠并行I/ O口实现的。 ·串行通信是指单位信息的各位一位一位地按顺序依次传送,它是靠串行接口实现数据传送的。串行通信是以帧为单位传送。(2)同步通信与异步通信 串行通信有两种基本通信方式,即同步通信与异步通信。 ·同步通信 是指发送和接收同步进行,可连续传送数据。
44、同步通信的数据帧格式如图所示。发送设备与接收设备之间不仅连有数据线,还连接有同步时钟信号线,由主控设备发出同步时钟信号,以达到发送与接收同步进行。同步字符是由用户约定的字符,放在一帧数据的开始和数据之间的间隔,起到提示发送开始和等待的作用。·异步通信 是指发送与接收没有用同步时钟同步,传送过程中数据之间有隔。异步通信的数据帧格式如图所示。一帧数据一般由一位起始位、若干数据位、一位停止位构成,传送中数据帧之间的空闲时间插入停止位。发送设备与接收设备之间没有同步时钟信号线,只有数据信号线,当接收设备检测到数据信号线有起始位到来,才开始接收数据。(3)串行通信的传送方式 ·单工
45、发送设备和接受设备之间连接的信号线传送方向是单向的。 ·半双工 两设备之间连接的信号线传送方向是双向的,但两方向不能同时进行。 ·全双工 两设备之间连接的信号线传送方向是双向的,并且两方向能同时进行。(4)波特率的概念 每秒传送数据的位数称为波特率(Baud Rate),单位为波特,即位/ 秒(b/ s)。波特率的倒数称为位传送时间,用Td 表示,单位为秒(s)。例如,传送速率每秒10帧数据,每一帧数据11 位,则传送波特率为:10 帧/ 秒×11 位/ 帧=110b/ s位传送时间 Td=9. 1 ms。2.89S51串行口的结构(1)串行口的总体结构 89S5
46、1串行口是一个可编程、全双工的串行口,结构框图如图所示。图4.29 89S51单片机串行口的结构框图串行口缓冲器SBUF(99H),在物理上它对应着两个独立的寄存器,发送缓冲器和接受缓冲器。执行MOV A,SBUF指令就是读接收缓冲器;执行MOV SBUF,A就是写发送SBUF。(2)串行口控制寄存器SCON包含串行口工作方式选择位、接收与发送控制位、串口状态标志位。其数据格式如下:各位功能如下:·SM0、SM1:串行口工作方式选择位。可设置4种工作方式。表4-5 串行口工作方式选择·SM2:允许方式2、3多机通信控制位,其功能见下表。表4-6 多机通信控制位SM2的意义
47、·REN:串行接收允许位。由软件设置1允许接收,设为0禁止接收。 ·TB8、RB8:在9位异步通信方式下,由于缓冲器只有8位,故用TB8作为发送的第9位,RB8作为接收的第9位。 ·TI、RI:发送中断标志与接收中断标志。当发送完一帧数据后硬件自动置位TI;当接收完一帧数据后,若数据满足保留条件,硬件自动置位RI。若CPU响应中断,系统不会自动复位TI、RI,必须由软件清0。(由硬件在方式0接收到第8位结束时置位,或在其他方式接收到停止位的中间时置位) ·复位后,SCON=00H。(3)电源控制寄存器PCON用来控制串行口的波特率倍增,以及在CHMOS系
48、列单片机中实现电源控制,其格式如下: ·复位后,PCON寄存器的所有位为0。 ·SMOD:波特率倍增位。当SMOD=1时,使串行口波特率加倍。3.串行口方式0(1)方式0的工作过程数据帧格式如下图,没有起始位与停止位,只有8位数据位,传送时低位在前,高位在后。 ·发送过程 CPU将数据送入发送缓冲器SBUF后,自动启动串行口发送。 8位数据以固定的波特率(fosc / 12),低位在前,从RXD引脚串行输出,TXD引脚发送移位时钟信号(频率为fosc /12),每个移位时钟的有效期间,对应一个输出的数据位。 8位数据发送完毕,置位TI=1,申请中断,通知CPU再发送下一个数据。 ·接收过程 软件设置REN=1时,启动接收过程。 串行口以fosc /12固定的波特率,从RXD引脚串行输入数据(低位在前),TXD引脚输出移位时钟信号。 当8位数据接收完毕
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个体门店奖惩制度范本
- 中小学工作目标奖惩制度
- 乡镇治安联防队奖惩制度
- 产科护士科室奖惩制度
- 仓库发错货奖惩制度
- 企业销售业绩奖惩制度
- 体检中心员工奖惩制度
- 2026福建福州鼓山中学物理、语文、数学、英语教师招聘4人考试备考试题及答案解析
- 中班绘画活动方案
- 2026贵州遵义市汇川区招聘政府专职消防员18人考试参考题库及答案解析
- 阳光板拆除及更换施工方案
- 第一单元第1课《认识标识》课件-一年级美术下册(苏少版2024)
- 新教科版小学四年级下册科学教案全册(计划及教学进度表)
- 无人机装调检修技术与人工智能应用课件:无人机人工智能应用场景
- 轨道交通 第三轨受流器 征求意见稿
- 《一元二次方程》复习2省公开课获奖课件说课比赛一等奖课件
- DL∕T 1659-2016 电力作业用软梯技术要求
- 小学国学经典《弟子规》第1课总叙()(部编)课件
- GB/T 748-2023抗硫酸盐硅酸盐水泥
- 渭南市东涧峪水库及输水管线工程环境影响报告
- 《摩托车和轻便摩托车用电线束总成》
评论
0/150
提交评论