单片机与嵌入式系统4_第1页
单片机与嵌入式系统4_第2页
单片机与嵌入式系统4_第3页
单片机与嵌入式系统4_第4页
单片机与嵌入式系统4_第5页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、注意事项1. 51(2)寄存器除PC外,所有寄存器都有内部地址(=80H),叫SFR;用地址直接访问,它们都有名字(ACC、B、P0、PSW)。2. 十六进制下末位是0和8的能够位寻址,位可以用地址带“.”访问,寄存器.bit,位名字或别名可访问。如PSW.0、P、0D0H.0、208.0是一样滴!3. 累加器A是隐含寻址,ACC则显式寻址。8/14/2022单片机与嵌入式系统第四章 汇编语言程序设计4.1 常用的伪指令 定义汇编起始位置伪指令 ORG nn ;nn为16位地址 例如: ORG 2000H ;定义了下面指令的地址是从2000H开始 MOV SP,#80H ;设堆栈 . 赋值伪指

2、令 字节名称 EQU 数字(或地址)例如: LED_AB EQU 2000H ;LED_AB 等于 2000H NUMB EQU 30H; 赋值后不能更改,需要更改要用DL重新定义赋值8/14/2022单片机与嵌入式系统数据地址赋值伪命令 DATA 表达(还有有XDATA,PDATA,IDATA)例如: TAB1 DATA 12H TAB2 DB 44H DATA命令功能与EQU类似,但有一下差别:1)EQU定义的字符名必须先定义再使用,而DATA定义的字符名可以后定义先用;2)用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名;3)DATA语句中可以把一个表达式的值

3、赋给字符名,其中的表达式应是可求值的。4)可以在编译中被统计data 的内存使用情况。8/14/2022单片机与嵌入式系统 定义字节常量(查表用) 标号: DB 8位二进数表例如: TAB1: DB 12H,34H,77H, TAB2: DB 07H,44H, 定义字常量(查表用) 标号: DW 16位二进数表例如:(每个字占二个字节,高8位在先,低8位在后) TAB: DW 1234H,7766H, 8/14/2022单片机与嵌入式系统 留存储空间 伪指令在汇编时,从定义地址开始保留DS之后表达式的值所规定的存储单元,以备后用。例如:ORG 1000HDS 08HDB 30H,8AH汇编以后

4、,从1000H保留8个单元,然后从1008H开始给内存赋值,即(1008H)=30H(1009H)=8AH 定义汇编结束指令 标号: END 地址或标号 END 指令一定要放到程序的最后,否则不会编译! 8/14/2022单片机与嵌入式系统 位地址符号伪指令 位名称 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 指令一定要放到程序的最后,否则不会编译!8/14/2022单片机与嵌入式系统;NAMESERI

5、ALTH2 DATA0CDHTL2 DATA0CCHT2CONDATA0C8HET2 BIT 0A8H.5BSEGAT00Hsendactive:DBIT 1;发送有效标志time_tick:DBIT 1;1秒定时标志sendfull:DBIT 1;发送缓冲区满标志display:DBIT 1;显示cnt值标志temp_bit:DBIT 1;临时位变量8/14/2022单片机与嵌入式系统DSEGAT30Ht_1000ms:DS 1t_100ms:DS 1t_set:DS 1ISEGAT80Hinbuf:DS 32; /接收缓冲存储数组outbuf:DS 32; /发送缓冲区存储数组; ; CS

6、EGAT0000HLJMPmain8/14/2022单片机与嵌入式系统8/14/2022单片机与嵌入式系统 复习 单片机I/O端口逻辑结构 8051有4个8位并行I/O端口,记做P0、P1、P2和P3。这四个口都是准双向的I/O口,共占有32条管脚,每一条I/O线都能独立的用作输入或输出。 1 PO口(I/O、总线)8/14/2022单片机与嵌入式系统2 P1口(I/O口) 8/14/2022单片机与嵌入式系统3 P2口(I/O口、总线) 8/14/2022单片机与嵌入式系统4 P3口(I/O口、复用功能)8/14/2022单片机与嵌入式系统5 I/O口的“读修改写”操作 从P0P3口的逻辑电

7、路分析可知,读一个端口的数据有两类:一类是读引脚电平的,另一类是读锁存器的。“读修改写”指令是为了避免误读引脚电平 (需要保存的读的都是寄存器)。 例如,ANL P1, A ;逻辑与指令. CPL P2.0 ;取反 INC P3 ;P3的内容增1.8/14/2022单片机与嵌入式系统外扩RAM、ROM时,使用锁存器8/14/2022单片机与嵌入式系统8/14/2022单片机与嵌入式系统 一、扩展的基本信息 (1)地址总线(Address Bus,AB) A15.A8,A7A0 (2)数据总线(Data Bus,DB) D7.D0 (3)控制总线(Control Bus,CB) /WR、/RD、

8、/PSEN、/EA、ALE8/14/2022单片机与嵌入式系统8/14/2022单片机与嵌入式系统8/14/2022单片机与嵌入式系统LED(Light Emitting Diode)LCD(liquid crystal display)液晶显示八段数码管数码管外形agdfecbdpabcdefgdp(a)共阴极gndVccabcdefgdp8/14/2022单片机与嵌入式系统编码 a b c d e f g dp D7 D6 D5 D4 D3 D2 D1 D0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0 0 0 0 0 0 0 1 1数码管外形agdfecbdp显示字形“

9、0”,编码:03H 1 0 0 1 1 1 1 1数码管外形agdfecbdp显示字形“1”,编码:9FH 0 0 1 0 0 1 0 1数码管外形agdfecbdp显示字形“2”,编码:25H 0 0 0 0 1 1 0 1数码管外形agdfecbdp显示字形“3”,编码:0DH 1 0 0 1 1 0 0 1数码管外形agdfecbdp显示字形“4”,编码:99H 0 1 0 0 1 0 0 1数码管外形agdfecbdp显示字形“5”,编码:49H 0 1 0 0 0 0 0 1数码管外形agdfecbdp显示字形“6”,编码:41H 0 0 0 1 1 1 1 1数码管外形agdfec

10、bdp显示字形“7”,编码:1FH 0 0 0 0 0 0 0 1数码管外形agdfecbdp显示字形“8”,编码:01H 0 0 0 0 1 0 0 1数码管外形agdfecbdp显示字形“9”,编码:09H 0 0 0 1 0 0 0 1数码管外形agdfecbdp显示字形“A”,编码:11H 1 1 0 0 0 0 0 1数码管外形agdfecbdp显示字形“b”,编码:0C1H 0 1 1 0 0 0 1 1数码管外形agdfecbdp显示字形“C”,编码:63H 1 0 0 0 0 1 0 1数码管外形agdfecbdp显示字形“d”,编码:85H 0 1 1 0 0 0 0 1数码

11、管外形agdfecbdp显示字形“E”,编码:61H 0 1 1 1 0 0 0 1数码管外形agdfecbdp显示字形“F”,编码:71H 0 0 1 1 0 0 0 0数码管外形agdfecbdp显示字形“P.”,编码:30H8/14/2022单片机与嵌入式系统编码取决于:硬件结构驱动方式8/14/2022单片机与嵌入式系统外部数据和常数访问方法1. 外部数据访问 MOVX A, DPTR MOVX DPTR, A MOVX A, Ri MOVX Ri, A2. 常数访问 MOVC A, A+DPTR MOVC A, A+PC8/14/2022单片机与嵌入式系统4.2 汇编程序设计过程 明

12、确课题的任务(硬件/功能/精度等); 按功能,分块规划程序结构(模块设计/子程序); 分配存储器资源(定义变量/设堆栈.); 根据功能选择合适的指令组合; 对源程序进行编译,调试和修改; 烧写代码(下载代码.)。 8/14/2022单片机与嵌入式系统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 000BH ;定时器0入

13、口地址(P3.4) LJMP T_T0 ;跳到T0中断程序 8/14/2022单片机与嵌入式系统中断向量入口地址表INT0和INT1T0、T1位置8/14/2022单片机与嵌入式系统 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 ;跳串口中断程序 . ;8/14/2022单片机与嵌入式系统 ORG 0100H T_INT0: . ;外部中断0子程序 RETI T_INT1:

14、;外部中断1子程序 RETI T_T0: ;定时器/计数0中断子程序 RETI T_T1: ;定时器/计数1中断子程序 RETI T_CK: ;串口中断子程序 RETI ;其他子程序. ; 8/14/2022单片机与嵌入式系统C语言中表示方法包括interrupt,将把所声明的函数定义为一个中断服务程序。另外,可以使用using定义此中断服务程序所使用的寄存器组。中断函数的定义格式为: void 函数名(void) interrupt n using m 关键字interrupt后面的n是中断号,n的取值范围为031; 关键字using 后面的m是所选择的寄存器组,取值范围03,该项可以省略。

15、对于interrupt后面n的取值,编译器从8n+3处产生中断向量。8/14/2022单片机与嵌入式系统C语言中表示方法/* Time0中断服务程序,使用寄存器组 */voidmTime0Interrupt( ) interrupt 1 /using 2/TH0 = 0 xDC;/TL0 = 0 x00; /* 串行口中断服务程序,使用寄存器组1 */voidmSelInterrupt( ) interrupt 4 using 1 / using 18/14/2022单片机与嵌入式系统 MAIN: MOV SP,#90H ;设堆栈(主程序部分) MOV IE, #00H ; ;其他指令 END

16、 ;结束8/14/2022单片机与嵌入式系统1MCS-51系列单片机内部包含哪些主要逻辑功能部件? 各有什么特点?2MCS-51单片机的时钟周期、机器周期、指令周期是如何分配的?当主频为12 MHz时,一个机器周期为几微秒?执行一条最长的指令需几微秒? 3MCS-51设有4组工作寄存器,有什么特点,如何选择?与RAM关系,应如何使用?4MCS-51的并行I/O端口信息有哪两种读取方法?读修改重写操作是针对并行I/O口的哪一部分进行的?有什么优点?8/14/2022单片机与嵌入式系统5程序计数器(PC)作为不可寻址寄存器,它有哪些特点?程序中能否知道某条指令的PC值? 680C51的ALE线的作用是什么?7简述MCS-51内部数据存储器的空间分配。访问外部数据存储器和程序存储器有什么本质区别?8堆栈有哪些功能?堆栈寄存器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?复位时内容是多少?8/14/2022单片机与嵌入式系统9MCS-51单片机引脚信号中,信号名称带上划线和下划线的意义.10单片机系统复位后,(PSW)00H,因此内部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论