《单片机与嵌入式系统.ppt》由会员分享,可在线阅读,更多相关《单片机与嵌入式系统.ppt(35页珍藏版)》请在三一办公上搜索。
1、2023/6/4,单片机与嵌入式系统,注意事项,1.51(2)寄存器除PC外,所有寄存器都有内部地址(=80H),叫SFR;用地址直接访问,它们都有名字(ACC、B、P0、PSW)。2.十六进制下末位是0和8的能够位寻址,位可以用地址带“.”访问,寄存器.bit,位名字或别名可访问。如PSW.0、P、0D0H.0、208.0是一样滴!3.累加器A是隐含寻址,ACC则显式寻址。,2023/6/4,单片机与嵌入式系统,第四章 汇编语言程序设计,4.1 常用的伪指令 定义汇编起始位置伪指令 ORG nn;nn为16位地址 例如:ORG 2000H;定义了下面指令的地址是从2000H开始 MOV SP
2、,#80H;设堆栈.赋值伪指令 字节名称 EQU 数字(或地址)例如:LED_AB EQU 2000H;LED_AB 等于 2000H NUMB EQU 30H;赋值后不能更改,需要更改要用DL重新定义赋值,2023/6/4,单片机与嵌入式系统,数据地址赋值伪命令 DATA 表达(还有有XDATA,PDATA,IDATA)例如:TAB1 DATA 12H TAB2 DB 44H DATA命令功能与EQU类似,但有一下差别:1)EQU定义的字符名必须先定义再使用,而DATA定义的字符名可以后定义先用;2)用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名;3)DATA语
3、句中可以把一个表达式的值赋给字符名,其中的表达式应是可求值的。4)可以在编译中被统计data 的内存使用情况。,2023/6/4,单片机与嵌入式系统,定义字节常量(查表用)标号:DB 8位二进数表例如:TAB1:DB 12H,34H,77H,TAB2:DB 07H,44H,定义字常量(查表用)标号:DW 16位二进数表例如:(每个字占二个字节,高8位在先,低8位在后)TAB:DW 1234H,7766H,2023/6/4,单片机与嵌入式系统,留存储空间 伪指令在汇编时,从定义地址开始保留DS之后表达式的值所规定的存储单元,以备后用。例如:ORG 1000HDS 08HDB 30H,8AH汇编以
4、后,从1000H保留8个单元,然后从1008H开始给内存赋值,即(1008H)=30H(1009H)=8AH 定义汇编结束指令 标号:END 地址或标号 END 指令一定要放到程序的最后,否则不会编译!,2023/6/4,单片机与嵌入式系统,位地址符号伪指令 位名称 BIT I/O口(或位地址)例如:CLK BIT P1.4;P1.4=CLK AD_CS BIT P1.6;P1.6=AD_CS FLG BIT 00H;00H是位地址 定义汇编结束指令 标号:END 地址或标号 END 指令一定要放到程序的最后,否则不会编译!,2023/6/4,单片机与嵌入式系统,;NAMESERIALTH2
5、DATA0CDHTL2 DATA0CCHT2CONDATA0C8HET2 BIT 0A8H.5BSEGAT00Hsendactive:DBIT 1;发送有效标志time_tick:DBIT 1;1秒定时标志sendfull:DBIT 1;发送缓冲区满标志display:DBIT 1;显示cnt值标志temp_bit:DBIT 1;临时位变量,2023/6/4,单片机与嵌入式系统,DSEGAT30Ht_1000ms:DS 1t_100ms:DS 1t_set:DS 1ISEGAT80Hinbuf:DS 32;/接收缓冲存储数组outbuf:DS 32;/发送缓冲区存储数组;CSEGAT0000H
6、LJMPmain,2023/6/4,单片机与嵌入式系统,2023/6/4,单片机与嵌入式系统,复习 单片机I/O端口逻辑结构,8051有4个8位并行I/O端口,记做P0、P1、P2和P3。这四个口都是准双向的I/O口,共占有32条管脚,每一条I/O线都能独立的用作输入或输出。1 PO口(I/O、总线),2023/6/4,单片机与嵌入式系统,2 P1口(I/O口),2023/6/4,单片机与嵌入式系统,3 P2口(I/O口、总线),2023/6/4,单片机与嵌入式系统,4 P3口(I/O口、复用功能),2023/6/4,单片机与嵌入式系统,5 I/O口的“读修改写”操作,从P0P3口的逻辑电路分
7、析可知,读一个端口的数据有两类:一类是读引脚电平的,另一类是读锁存器的。“读修改写”指令是为了避免误读引脚电平(需要保存的读的都是寄存器)。例如,ANL P1,A;逻辑与指令.CPL P2.0;取反 INC P3;P3的内容增1.,2023/6/4,单片机与嵌入式系统,外扩RAM、ROM时,使用锁存器,2023/6/4,单片机与嵌入式系统,2023/6/4,单片机与嵌入式系统,一、扩展的基本信息(1)地址总线(Address Bus,AB)A15.A8,A7A0(2)数据总线(Data Bus,DB)D7.D0(3)控制总线(Control Bus,CB)/WR、/RD、/PSEN、/EA、A
8、LE,2023/6/4,单片机与嵌入式系统,2023/6/4,单片机与嵌入式系统,2023/6/4,单片机与嵌入式系统,LED(Light Emitting Diode),LCD(liquid crystal display)液晶显示八段数码管,2023/6/4,单片机与嵌入式系统,编码,2023/6/4,单片机与嵌入式系统,编码取决于:硬件结构驱动方式,2023/6/4,单片机与嵌入式系统,外部数据和常数访问方法,1.外部数据访问 MOVX A,DPTR MOVX DPTR,A MOVX A,Ri MOVX Ri,A2.常数访问 MOVC A,A+DPTR MOVC A,A+PC,2023/
9、6/4,单片机与嵌入式系统,4.2 汇编程序设计过程 明确课题的任务(硬件/功能/精度等);按功能,分块规划程序结构(模块设计/子程序);分配存储器资源(定义变量/设堆栈.);根据功能选择合适的指令组合;对源程序进行编译,调试和修改;烧写代码(下载代码.)。,2023/6/4,单片机与嵌入式系统,4.3 汇编程序的结构,CLK BIT P1.7;I/O口定义.NUB EQU 2020H;常数或地址定义.;定义变量或常数 ORG 0000H;复位入口地址(上电)LJMP MAIN;跳到主程序 ORG 0003H;外部中断0入口地址(P3.2)LJMP T_INT0;跳到into中断程序 ORG
10、000BH;定时器0入口地址(P3.4)LJMP T_T0;跳到T0中断程序,2023/6/4,单片机与嵌入式系统,中断向量入口地址表,INT0和INT1T0、T1位置,2023/6/4,单片机与嵌入式系统,ORG 0013H;外部中断1入口地址(P3.3)LJMP T_INT1;跳int1中断程序 ORG 001BH;定时器1入口地址(P3.5)LJMP T_T1;跳T1中断程序 ORG 0023H;串口入口地址(P3.0,P3.1)LJMP T_CK;跳串口中断程序.;,2023/6/4,单片机与嵌入式系统,ORG 0100H T_INT0:.;外部中断0子程序 RETI T_INT1:;
11、外部中断1子程序 RETI T_T0:;定时器/计数0中断子程序 RETI T_T1:;定时器/计数1中断子程序 RETI T_CK:;串口中断子程序 RETI;其他子程序.;,2023/6/4,单片机与嵌入式系统,C语言中表示方法,包括interrupt,将把所声明的函数定义为一个中断服务程序。另外,可以使用using定义此中断服务程序所使用的寄存器组。中断函数的定义格式为:void 函数名(void)interrupt n using m 关键字interrupt后面的n是中断号,n的取值范围为031;关键字using 后面的m是所选择的寄存器组,取值范围03,该项可以省略。对于inter
12、rupt后面n的取值,编译器从8n+3处产生中断向量。,2023/6/4,单片机与嵌入式系统,C语言中表示方法,/*Time0中断服务程序,使用寄存器组*/voidmTime0Interrupt()interrupt 1/using 2/TH0=0 xDC;/TL0=0 x00;/*串行口中断服务程序,使用寄存器组1*/voidmSelInterrupt()interrupt 4 using 1/using 1,2023/6/4,单片机与嵌入式系统,MAIN:MOV SP,#90H;设堆栈(主程序部分)MOV IE,#00H;其他指令 END;结束,2023/6/4,单片机与嵌入式系统,1MC
13、S-51系列单片机内部包含哪些主要逻辑功能部件?各有什么特点?2MCS-51单片机的时钟周期、机器周期、指令周期是如何分配的?当主频为12 MHz时,一个机器周期为几微秒?执行一条最长的指令需几微秒?3MCS-51设有4组工作寄存器,有什么特点,如何选择?与RAM关系,应如何使用?4MCS-51的并行I/O端口信息有哪两种读取方法?读修改重写操作是针对并行I/O口的哪一部分进行的?有什么优点?,2023/6/4,单片机与嵌入式系统,5程序计数器(PC)作为不可寻址寄存器,它有哪些特点?程序中能否知道某条指令的PC值?680C51的ALE线的作用是什么?7简述MCS-51内部数据存储器的空间分配
14、。访问外部数据存储器和程序存储器有什么本质区别?8堆栈有哪些功能?堆栈寄存器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?复位时内容是多少?,2023/6/4,单片机与嵌入式系统,9MCS-51单片机引脚信号中,信号名称带上划线和下划线的意义.10单片机系统复位后,(PSW)00H,因此内部RAM寄存区的当前寄存器是第几组,与R0-R7对应关系。11.简述入栈和出栈SP的操作过程。12.影响标志位C、P、OV的指令有哪几类,具体给出几条例子。13.8052中SP最大使用空间可以是多少?位于何处?14.LCALL执行前SP=6FH,进行后SP=?,2023/6/4,单片机与嵌入式系统,89C52复位后执行如下程序:MOVR0,#90HMOVA,#55HMOVR0,ACPLAPUSHACCMOV90H,ADB00,00问:执行完毕后P1的输出是多少,SP中的值是多少?,