1、很多算术逻辑运算指令执行后都会影响进位标志C。例如加减运算,若运算结果有进位或借位,则C=1,若无,则C=0。可用专门的指令或硬件将C置位或清零,在进行位操作时,C又起着位累加器的作用,类似于累加器A。(2)辅助进位标志AC(PSW.6):做加减运算时,若低半字节有进位(借位),则AC=1,否则AC=0,辅助进位标志主要用于BCD运算调整时。(3)软件标志FO(PSW.5):这是可由用户定义的一个状态标志,可由用户置位或复位。F1的定义与F0相同。(4)工作寄存器组选择( PSW.4 PSW.3)5)溢出标志OV(PSW.2):当运算结果超出机器所能表示的范围时称溢出。OV是带符号数运算的溢出
2、标志,如发生溢出,则OV=1;否则OV=0。(6)奇偶标志P(PSW.0):P反映执行指令后累加器A中1的个数的奇偶,若A中1的个数为奇数,则P=1,若 A中1的个数为偶数,则P=0。4.1、程序存储器存放程序及各种表格、常数,其寻址范围为64KB,编址范围为0000H至FFFFH。在既有片内又有片外程序存储器时,通常编址时先片内,后片外,片内片外连续不重叠。 EA有两种接法:EA=1,此时复位后先执行片内程序存储器的程序;EA=0,此时将不访问片内程序存储器而直接访问片外程序存储器程序存储器中有特殊用途的6个单元0003H 部中断0 中断服务程序入口地址000BH 定时器/计数器1溢出中断入
3、口地址0013H 外部中断1入口地址001BH 定时器/计数器1溢出中断入口地址0023H 串行口中断入口地址002BH 定时器/计数器2溢出中断入口地址 (89C52)4.2、片内数据存储器:分为RAM区(工作寄存器区、位寻址区、用户RAM区)和专用寄存器区(SFR区)两个区域对于51子系列,片内RAM块的地址从00H7FH,占128个字节,片内特殊功能寄存器SFR块:从80HFFH,合起来共256B片内RAM块可分为三个区域:工作寄存器存器区:00H1FH 位寻址区: 20H2FH 数据缓冲区:30H7FH这三个区域统一编址,从00H7FH,各区域有自己的特殊功能,也可统一调度使用(1)工
4、作寄存器区:分为4个寄存器组(PSW.4 PSW.3), RS1RS0工作寄存器组 片内RAM地址: 0 0 第0组 00H07H 0 1 第1组 08H0FH 1 0 第2组 10H17H 1 1 第3组 18H1FH (2)、片内高128字节RAM(特殊功能寄存器块SFR)特殊功能寄存器又称专用寄存器,与片内RAM统一编址(PC除外)用直接寻址方式寻址,其地址从80HFFH,离散分布 5、片外数据存储器片外数据存储器最大寻址范围为64KB。地址编码为:0000HFFFFH,也就是说片外数据存储器的地址编码与程序存储器的地址是重叠使用的 。因为有两条不同的读信号线: RD(P3.7) PSE
5、N ,另外还有两个不同的指令: MOVX, MOVC复位通常有上电复位和按纽操作复位两种方法。 复位是靠外部电路实现的。常用的一种上电与按钮复位电路见图6、时钟电路节拍信号由振荡器产生,51系列单片机的内部有一个用于构成振荡器的高增益反相放大器。 89C51单片机的时钟信号通常由两种方式产生:1、片外振荡器时钟电路 2、外部振荡器时钟电路1、内部震荡方式 2、外部时钟方式7、CPU时序(周期)状态周期:振荡器输出的振荡脉冲作单片机内部各部件协调工作的节拍信号,两个时钟脉冲为1个状态周期。机器周期:计算机一条指令,每完成一项规定的操作所需的时间称为一个机器周期。对89C51系列单片机6个状态周期
6、构成一个机器周期。若用12MHZ晶振,则机器周期1s 、若用6MHZ晶振,则机器周期2s,12个时钟周期。指令周期:CPU执行一条指令所需的时间。指令周期以机器周期为单位,指令不同其指令周期分别为1,2,4个机器周期。MCS51系列单片机执行指令的指令周期是用时钟周期来描述的,分为单周期指令、双周期指令、四周期指令四种第三章1、计算机编写程序时使用的程序设计语言有三种:机器语言、汇编语言和高级语言。机器语言:是唯一CPU能直接识别的语言,机器语言描述的程序我们通常称之为目标程序。汇编语言和高级语言编制的程序称之为源程序,都要转换成机器语言程序后才能为计算机直接执行。2、寻址方式 (累加器 表达
7、方式:A、ACC、0E0H)1)、立即寻址 MOV A,#34H 操作数就在指令中,跟在操作码的后面,该操作数被称为立即数(常数)。立即数前面加“#”符号作为标志。2)、直接寻址:MOV A,30H 在指令中直接给出操作数所在的片内数据存储单元的地址 00H-FFH 。把直接地址30H单元的内容送给累加器A1)直接寻址方式是访问专用寄存器的方法(也可以使用名称)2、通常直接寻址方式只能访问片内RAM的低128个单元3、在进行位寻址时也采用直接寻址的方式 例: JNB 7EH,NEXT3)、寄存器寻址 MOV A,Rn ;(n=0,1,2.7) 或者: MOV A,B;MOV PSW,A 操作数
8、在寄存器中,指令中给出寄存器名式。把寄存器Rn的内容送给累加器A中。4)、寄存器间接寻址 MOV A,R0 在指令中用工作寄存器(R0、R1、DPTR)给出存储单元的地址,而操作数在RAM中(片内RAM或片外RAM),把R0里存放的地址的相应内容送给A。5)、变址寻址(基址寄存器+变址寄存器间接寻址) MOVC A,A+DPTR;A=5 DPTR=12013 用于访问程序存储器ROM,它以DPTR或PC计数器作为基址寄存器,以累加器A作为变址寄存器,两者之和为操作数在程序存储器中的地址,把两者之和的地址的内容送给A。(A=(1218H)此种方式常用于查表操作。6)、相对寻址 JC rel JN
9、Z 06H 也用于访问程序存储器,执行指令时将程序计数器PC的当前值与指令中给出的相对偏移量(rel)之和作为转移的目的地址,从此地址处开始执行指令。PC的当前值称为基地址,偏移量为1个字节的带符号数,用补码表示,转移范围为128127。7)、位寻址 JNB ACC.3 ,STOP ; MOV C,20H位寻址用于片内202FH的某1位,或特殊功能寄存器的某1位。3、通用数据传送指令MOV1)以累加器A为目的操作数传送指令 2) 以工作寄存器Rn为目的操作数传送指令 3)以直接地址为目的操作数 4)以间接地址为目的操作数的传送指令 (5)十六位数据传送类指令 MOV DPTR,#data16
10、。注意:以A为目的的操作数传送指令会影响奇偶标志位,其余对标志位均无影响,立即数#data只能做源操作数,寄存器寻址和寄存器间接寻址不能同时出现在操作数中,必须通过A间接传送。4.交换指令 1)字节交换指令XCH(1)某工作寄存器内容与累加器A交换指令。XCH A, Rn;n=0、1、7(2)某RAM单元内容与累加器交换指令。XCH A,Ri;i=0、1(3)某片内RAM (低128字节)或专用寄存器内容与累加器交换指令。 XCH A,30H 2)半字节交换指令 XCHD某片内RAM单元内容的低半字节与累加器的低半字节交换指令。 格式: XCHD A,Ri;i=0、1 3)累加器的高低半字节互
11、换指令 SWAP 格式: SWAP A5、堆栈操作指令单片机堆栈编址采用向上生成方式,即栈底占用较低地址,栈顶占用较高地址,1、进栈指令 PUSH SPSP+1 将direct指定的片内RAM(低128字节)单元 或专用寄存器内容压栈2、出栈指令 POP SPSP-1 将栈顶处内容弹到direct指定的RAM(低128字节)某单元或某专用寄存器6、外部RAM的传送指令(MOVX) 1、片外RAM(8位地址)与累加器A之间的传送指令 MOVX A, Ri;i=0.1,读片外RAM MOVX Ri,A ;i=0.1,写片外RAM2、片外RAM(16位地址)与累加器A之间的传送指令 MOVX A,D
12、PTR; 读片外RAM MOVX DPTR, A; 写片外RAM7、查表指令指令常用于查表程序:MOVC A,DPTR+A; A(A+DPTR) 该指令中的DPTR常用于存放表格的起始地址。 MOVC A,A+PC; A(A+PC)当前的PC值是有该查表指令所在地址确定 注意:1、DPTR+A和A+PC均为程序存储器某单元的地址,传送的是该单元的内容 2、在用A+PC计算程序存储器地址时,PC取当前值。8、加法指令(加法指令共有8条,均以累加器A为一方,运算结果都送回累加器A)2、带进位加法指令ADDC A, Rn; AA+Rn+C ,ADDC指令主要用于多字节数相加时,从低字节开始,依次相加
13、,最低字节的相加用ADD指令,而其它高位字节的相加要用ADDC指令 (若高8位还有进位位C=1,则MOV A,#00H ADDC A,#00H MOV 42H,A)9、加1指令 INC,加1指令执行后不影响标志位CY,减1指令 DEC ,也不影响CY10、十进制调整指令DA A:对BCD码加法运算结果进行调整 调整的方法:当累加器A的低半字节的值9或AC=1时,低半字节加6;当高半字节9或CY=1时,高半字节加6进行调整后。可得到BCD数的加法运算的正确结果。11、减法指令SUBB:带借位减法指令,亦以累加器A为一方(被减数),相减的结果均送回累加器A 。为带进(借)位相减指令,在进行减法运算
14、时应先将进位位清零。SUBB A,Rn; AA(Rn)C,n=0、2712、1.乘法指令 MUL AB该指令实现将累加器A与寄存器B中的两个无符号数相乘,乘积为16位,低8位积在A中,高8位积在B中。2、除法指令 DIV AB除法指令实现两个8位的无符号数相除,其中被除数在累加器A中,除数在寄存器B中,结果商在A中,余数在B中。指令执行后,进位标志CY、溢出标志OV均为0,但除数为0时,OV=1。13、逻辑运算类指令 (当目的操作数为累加器A时会影响奇偶标志位P,带进位的移位指令会影响C,除此之外,逻辑运算类指令不影响程序状态PSW)1、ANL (与指令)常用于使操作数的某些位(与0相与)清零
15、而使另外的一些位(与1相与)保持不变2、OR或指令 用于使操作数的某些位置1(与1相或)而另一些位保持不变(与0相或)。3、XOR异或指令使操作数的某些位按位取反(与1异或)而使其它位保持不变(与0异或)。4.累加器A清零与取反指令: CLR A;将累加器清零。CPL A; 累加器内容取反后A14、无条件转移指令 1、绝对转移指令 :AJMP NEXT(addr11)指令执行的操作为 PCPC+2 (两个字节)转移的范围为211,即2KB地址空间2、长转移指令 :JMP 2400H (addr16 )指令执行的操作为 PCPC+3 。转移的范围为216,即64KB地址空间 3、 短转移指令 S
16、JMP rel 执行的操作为: PCPC+2+rel PC+2为执行此指令时PC的当前值,rel是用8位的位移量 (补码表示) 转移的范围为当前地址-128 +127必须注意,基地址为PC的当前值,在转移指令进行地址计算时,PC的当前值已指向下一条指令的第一个字节。4. 变址(间接)转移指令 JMP A+DPTR指令执行的操作为: PC A+DPTR15、条件转移指令 1、累加器内容到零转移指令 JZ rel; A=0转移 JNZ rel; A0转移 转移目的地址PC=PC+2+rel2、比较不相等转移指令 CJNE 若目的操作数=源操作数,不转移,向下顺序执行;否则转移;转移的目的地址PC=
17、PC+3+rel 3、减1不为0转移指令 DJNZ DJNZ Rn,rel; Rn Rn-1,Rn0时转移 16、子程序调用、返回指令1、长调用指令 LCALL addr16 指令执行的操作为: PCPC+32、绝对调用指令 ACALL addr11 指令执行的操作即:PCPC+23、返回指令 ( RET RETI) 子程序返回RET4、中断返回指令 RETI17、汇编语言中位地址的表示方法有多种形式, 1)、直接位地址方式:如20H单元的D7位可表示07H 2)、特殊功能寄存器: 如P1.5、PSW.4 3)、位名称方式: 如直接使用RS1、RS0作位地址3、位修正(清0、置1、取反)指令C
18、LR C; C0 CLR bit; bit0 CPL C; 取反 CC CPL bit; 取反 bitbit SETB C; C1 SETB bit ; bit1位转移指令 :JC rel; C=1 转移,否则继续执行 JNC rel; C=0 转移,否则继续执行 JBbit,rel; bit=1 转移,否则继续执行 JNB bit,rel; bit=0 转移,否则继续 JBC bit,rel ; bit=1 转移,且bit0,否则继续向下执行 18、汇编语言源程序:(1)ORG(汇编起始命令) (2)END(汇编结束伪指令,一个源程序只能有一个END命令) 3)EQU(赋值伪指令)(4)DA
19、TA(数据地址赋值伪指令)(5)DB(定义字节伪指令) (6)DW(定义字伪指令)(7)DS(定义存储空间伪指令)(8)BIT(位地址赋值伪指令)第四章1、中断源 (1)外部中断:外部中断是由外部原因引起的,即INT0外部中断0请求信号,由P3.2引脚输入低电平或下降沿即向CPU申请中断INT1外部中断1请求信号,由P3.3引脚输入低电平或下降沿即向CPU申请中断。(2)定时中断 定时中断是当T0或T1定时器计数器中发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,(3 )串行口中断 是为串行数据的传送需要而设置的。当接收或发送完一串行帧数据时,使内部串行口中断请
20、求标志RI或TI1,并请求中断中断入口地址:外部中断0(0003H) 定时器T0中断(000BH) 外部中断1(0013H) 定时器T1中断(001BH) 串行口中断(0023H)2、TCON(定时器控制寄存器) 的中断标志 TFlTR1TF0TR0IE1IT1IE0IT0TFlT1溢出中断标志,CPU响应中断后,才由硬件自动清“0”。也可用软件查询该标志,并由软件清“0”。TF0T0溢出中断标志TR1=1 T1 启动 TR1=0 T1停止TR0=1 T0 启动 TR0=0 T0停止IE1INT1外部中断1标志。IE11外部中断1申请中断。IE0INT0外部中断0标志ITl0,外部中断1为电平
21、触发方式,低电平有效。ITl1,外部中断1控制为边沿(先高后低的负跳变)触发方式IT0外部中断0触发方式控制位。3、 SCON(串行口控制寄存器)的中断标志 SMODTIRITI串行发送中断标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。TI标志由软件清除。RI串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。RI标志由软件清除。4、中断允许寄存器IE EAESET1EX1ET0EX0EA -CPU中断总允许位。EA1,CPU开放中断;ES串行口中断允许位。ES1,允许中断;ET1一T1中断允许位。ET11,允许T1中断;EX
22、1外部中断l允许位。EX11,允许中断;ET0 T0中断允许位。ET0l,允许T0中断;EX0外部中断0允许位。EX01,允许中断5、中断优先级寄存器PSPT1PX1PX0PS串行口中断优先级控制位。PT1T1中断优先级控制位。PX1外部中断l中断优先级控制位。PT0T0中断优先级控制位。PX0外部中断0中断优先级控制位。外部中断0、 定时器T0中断 、 外部中断1 、定时器T1中断、串行口中断 (高至低) 6、中断处理的基本过程应该包括:中断请求、中断判优、中断响应、中断处理以及中断返回(中断处理程序从入口地址开始执行,直到返回指令“RETI”为止,包括保护现场、中断处理、恢复现场三部分内容
23、)CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。(1)硬件清0:定时器0或1中断,CPU在响应中断后,中断请求位自动情0撤除中断。 边沿触发外部中断,CPU在响应中断后,硬件自动清除有关的中断请求 。(2软件清0:串行口中断,CPU响应中断后,靠软件来清除相应的位 RI TI ,才能撤消中断标志。(3)强制清0 :电平触发外部中断,必须由专门电路使INT0、INT1的引角为高电平,才可撤除外部中断。7、中断初始化程序1开中断;EA12某一中断源中断请求的允许与禁止(屏蔽);3确定各中断源的优先级别;4若是外部中断请求,则要设定触发方式是电平触 发还是边沿触发。
24、8、定时器/计数器的方式控制寄存器TMOD定时器1位编号D7D6D5D4D3D2D1D0位功能GATEC/TM1M0 M1和M0:方式选择位,定义如表所示:C/T:功能选择。C/T=0定时器方式;C/T=1计数器方式。GATE:门控位。GATE=0,允许软件控制位TR 0或TR 1启动定时器。T0或T1;GATE=1,且TR 0(或TR 1)=1,由外部中断引脚电平INT 0 (P3.2 )启动定时器T0 ,即由INT 1 (P3.3)引脚控制T1。M1 M0工作方式功能说明0 0方式013位计数器(8192)0 1方式116位计数器1 0方式2自动再装入8位计数器1 1方式3定时器0:分成两
25、个8位计数器设计定时中断程序:1.确定工作方式:对TMOD寄存器赋值;2.置初值:对TH0、TL0或TH1、TL1寄存器赋值;3.根据需要,开放定时器中断:对IE寄存器赋值;4.启动定时/计数器9、89S51的串行通信并行通信数据的各位同时传送。串行通信数据一位一位顺序传送。1) 异步通信方式在异步通信中,数据通常是以字符(或字节)为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,通过传输线被接收设备一帧一帧地接收。发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立。每当接收端检测到传输线上发送过来的低电平逻辑“0”(字符帧中起始位)时,就知道发送端已开始发送。起始
26、位:位于字符帧开头,只占一位,始终为逻辑“0”(低电平),用于向接收设备表示发送端开始发送一帧信息。停止位:位于字符帧末尾,为逻辑“1”(高电平),通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备同步通信要求发送端和接收端的时钟严格同步,需要提供单独的时钟信号,而且严格控制传送数据的时间间隔。波特率:每秒钟传送二进制数码的位数(亦称比特数),单位是bit/s,即位/秒字符的实际传输速率是指每秒内所传字符帧的帧数,和字符帧格式有关。TI:发送中断标志位:用于指示一帧信息是否发送完RI:接收中断标志位:用于指示一帧信息是否接收完1.串行口初始化编程: 1)确定波特率,并设定T1为方式2 2)设定串行口工作方式,并确定SMOD (PCON的最高位) 3)开中断,设置高优先级(也可用查询方式 RI,TI) 4)启动 T1产生波特率(TR1) MOV SCON,# MOV PCON,#80H;(SMOD=1,波特率提高1倍) MOV TMOD,#20H MOV TH1,# MOV TL1,# CLR ET1 SETB EA SETB ES SETB PS SETB TR
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1