单片机与嵌入式系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
28.06.2020
6
;NAMESERIAL
TH2 DATA 0CDH
TL2 DATA 0CCH
T2CON DATA 0C8H
ET2 BIT 0A8H.5
BSEG AT 00H
sendactive:DBIT 1 ;发送有效标志
time_tick: DBIT 1 ;1秒定时标志
sendfull: DBIT 1 ;发送缓冲区满标志
RETI
………………
;其他子程序……..
;
单片机与嵌入式系统
28.06.2020
28
C语言中表示方法
包括interrupt,将把所声明的函数定义为一 个中断服务程序。另外,可以使用using定义此 中断服务程序所使用的寄存器组。
中断函数的定义格式为:
void 函数名(void) interrupt n [using m]
display: DBIT 1 ;显示cnt值标志
temp_bit: DBIT 1 ;临时位变量
单片机与嵌入式系统
28.06.2020
7
DSEG AT t_1000ms: t_100ms: t_set: ISEG AT inbuf: outbuf: ; ; CSEG AT
LJMP
30H DS 1 DS 1 DS 1 80H DS 32 DS 32
其中的表达式应是可求值的。 4)可以在编译中被统计data 的内存使用情况。
单片机与嵌入式系统
28.06.2020
3
<4> 定义字节常量(查表用) [标号:] DB 8位二进数表
例如:
TAB1: DB 12H,34H,77H,……
TAB2: DB 07H,44H,…… <5> 定义字常量(查表用)
位名称 BIT I/O口(或位地址)
例如:
CLK
BIT P1.4 ; P1.4=CLK
AD_CS BIT P1.6 ; P1.6=AD_CS
FLG
BIT 00H ; 00H是位地址
<8> 定义汇编结束指令 [标号:] END [地址或标号]
END 指令一定要放到程序的最后,否则不会编译!
单片机与嵌入式系统
6.80C51的ALE线的作用是什么? 7.简述MCS-51内部数据存储器的空间分配。 访问外部数据存储器和程序存储器有什么本质 区别? 8.堆栈有哪些功能?堆栈寄存器(SP)的作 用是什么?在程序设计时,为什么还要对SP重 新赋值?复位时内容是多少?
单片机与嵌入式系统
28.06.2020
33
9.MCS-51单片机引脚信号中,信号名称带 上划线和下划线的意义.
1 PO口(I/O、总线)
单片机与嵌入式系统
28.06.2020
10
2 P1口(I/O口)
单片机与嵌入式系统
28.06.2020
11
3 P2口(I/O口、总线)
单片机与嵌入式系统
28.06.2020
12
4 P3口(I/O口、复用功能)
中断源
外部中断 0 定时计数器 T0 溢出
外部中断 1 定时计数器 T1 溢出
串行口中断 定时计数器 T2 溢出或 T2EX 输入负
跳变
入口地址 0003H 000BH 0013H 001BH 0023H 002BH
单片机与嵌入式系统
28.06.2020
13
5 I/O口的“读-修改-写”操作
从P0~P3口的逻辑电路分析可知,读一个端口的数据
有两类:一类是读引脚电平的,另一类是读锁存器的。
字节名称 EQU 数字(或地址)
例如:
LED_AB EQU 2000H ;LED_AB 等于 2000H
NUMB EQU 30H;
赋值后不能更改,需要更改要用DL重新定义赋值
28.06.2020
单片机与嵌入式系统
<3>数据地址赋值伪命令 <字符名称> DATA 表达(还有有XDATA, PDATA,IDATA) 例如:
“读-修改-写”指令是为了避免误读引脚电平
(需要保存的读的都是寄存器)。
例如,ANL P1, A
;逻辑与指令…….
CPL P2.0
;取反……
INC P3
;P3的内容增1…..
单片机与嵌入式系统
28.06.2020
14
外扩RAM、ROM时,使用锁存器
单片机与嵌入式系统
28.06.2020
15
单片机与嵌入式系统
TAB1wk.baidu.comDATA 12H
TAB2 DB 44H DATA命令功能与EQU类似,但有一下差别: 1)EQU定义的字符名必须先定义再使用,而DATA
定义的字符名可以后定义先用; 2)用EQU伪指令可以把一个汇编符号赋给一个名
字,而DATA只能把数据赋给字符名; 3)DATA语句中可以把一个表达式的值赋给字符名,
[标号:] DW 16位二进数表 例如:(每个字占二个字节,高8位在先,低8位在后)
TAB: DW 1234H,7766H,……
单片机与嵌入式系统
28.06.2020
4
<6> 留存储空间 伪指令 在汇编时,从定义地址开始保留DS之后表达式的值
所规定的存储单元,以备后用。例如:
ORG 1000H DS 08H
MOV IE, #00H ;
………
;其他指令
END
;结束
单片机与嵌入式系统
28.06.2020
31
1.MCS-51系列单片机内部包含哪些主要逻 辑功能部件? 各有什么特点?
2.MCS-51单片机的时钟周期、机器周期、 指令周期是如何分配的?当主频为12 MHz时,
一个机器周期为几微秒?执行一条最长的指令
17
单片机与嵌入式系统
28.06.2020
18
单片机与嵌入式系统
28.06.2020
19
LED(Light Emitting Diode)
LCD(liquid crystal display)液晶显示
八段数码管
a
fb g
ec d dp
数码管外形
a b c d e f g dp
a b c d e f g dp
//TH0 = 0xDC; //TL0 = 0x00; } /* 串行口中断服务程序,使用寄存器组1 */ void mSelInterrupt( ) interrupt 4 using 1 // using 1
单片机与嵌入式系统
28.06.2020
30
MAIN:
MOV SP,#90H ;设堆栈(主程序部分)
……….. ;
单片机与嵌入式系统
28.06.2020
27
ORG 0100H
T_INT0: …….. ;外部中断0子程序
RETI
T_INT1: …… ;外部中断1子程序
RETI
T_T0: ……
;定时器/计数0中断子程序
RETI
T_T1: ……
;定时器/计数1中断子程序
RETI
T_CK: ……
;串口中断子程序
3. 累加器A是隐含寻址,ACC则显式寻址。
单片机与嵌入式系统
28.06.2020
1
第四章 汇编语言程序设计
4.1 常用的伪指令
<1> 定义汇编起始位置伪指令
ORG nn
;nn为16位地址
例如:
ORG 2000H
;定义了下面指令的地址是从2000H开始
MOV SP,#80H ;设堆栈
…….
<2> 赋值伪指令
LJMP T_INT0 ;跳到into中断程序 ORG 000BH ;定时器0入口地址(P3.4) LJMP T_T0 ;跳到T0中断程序
单片机与嵌入式系统
28.06.2020
25
中断向量入口地址表
INT0和INT1 T0、T1位置
单片机与嵌入式系统
28.06.2020
26
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 ;跳串口中断程序
需几微秒? 3.MCS-51设有4组工作寄存器,有什么
特点,如何选择?与RAM关系,应如何使用? 4.MCS-51的并行I/O端口信息有哪两种读
取方法?读—修改—重写操作是针对并行I/O口 的哪一部分进行的?有什么优点?
单片机与嵌入式系统
28.06.2020
32
5.程序计数器(PC)作为不可寻址寄存器, 它有哪些特点?程序中能否知道某条指令的PC 值?
0000H main
; //接收缓冲存储数组 ; //发送缓冲区存储数组
单片机与嵌入式系统
28.06.2020
8
单片机与嵌入式系统
28.06.2020
9
复习 单片机I/O端口逻辑结构
8051有4个8位并行I/O端口,记做P0、P1、P2和P3。这四个口都是准双向的 I/O口,共占有32条管脚,每一条I/O线都能独立的用作输入或输出。
DB 30H,8AH 汇编以后,从1000H保留8个单元,然后从1008H
开始给内存赋值,即
(1008H)=30H (1009H)=8AH <6> 定义汇编结束指令
[标号:] END [地址或标号]
END 指令一定要放到程序的最后,否则不会编译!
单片机与嵌入式系统
28.06.2020
5
<7> 位地址符号伪指令
单片机与嵌入式系统
28.06.2020
34
89C52复位后执行如下程序: MOV R0,#90H MOV A,#55H MOV @R0,A CPL A PUSH ACC MOV 90H,A DB 00,00 问:执行完毕后P1的输出是多少,SP中的值是多 少?
注意事项
1. 51(2)寄存器除PC外,所有寄存器都有内 部地址(>=80H),叫SFR;用地址直接访问, 它们都有名字(ACC、B、P0、PSW…)。
2. 十六进制下末位是0和8的能够位寻址,位 可以用地址带“.”访问,寄存器.bit,位名字或 别名可访问。如PSW.0、P、0D0H.0、208.0 是一样滴!
28.06.2020
16
一、扩展的基本信息 (1)地址总线(Address Bus,AB)
A15….A8,A7…A0 (2)数据总线(Data Bus,DB)
D7….D0 (3)控制总线(Control Bus,CB)
/WR、/RD、/PSEN、/EA、ALE
单片机与嵌入式系统
28.06.2020
a
ff
b
g
ee
cc
d dp
数码管外形
单片机与嵌入式系统
28.06.2020
21
编码取决于: 1. 硬件结构 2. 驱动方式
单片机与嵌入式系统
28.06.2020
22
外部数据和常数访问方法
1. 外部数据访问 MOVX A, @DPTR MOVX @DPTR, A MOVX A, @Ri MOVX @Ri, A
① 关键字interrupt后面的n是中断号,n的取 值范围为0~31;
② 关键字using 后面的m是所选择的寄存器 组,取值范围0~3,该项可以省略。
对于interrupt后面n的取值,编译器从8n+3 处产生中断向量。
单片机与嵌入式系统
28.06.2020
29
C语言中表示方法
/* Time0中断服务程序,使用寄存器组 */ void mTime0Interrupt( ) interrupt 1 //using 2 {
单片机与嵌入式系统
28.06.2020
24
4.3 汇编程序的结构
CLK BIT P1.7 ;I/O口定义…..
NUB EQU 2020H ;常数或地址定义….
………….
;定义变量或常数
(P3.2)
ORG 0000H ;复位入口地址(上电) LJMP MAIN ;跳到主程序 ORG 0003H ;外部中断0入口地址
2. 常数访问 MOVC A, @A+DPTR MOVC A, @A+PC
单片机与嵌入式系统
28.06.2020
23
4.2 汇编程序设计过程
<1> 明确课题的任务(硬件/功能/精度等); <2> 按功能,分块规划程序结构(模块设计/子程序); <3> 分配存储器资源(定义变量/设堆栈….); <4> 根据功能选择合适的指令组合; <5> 对源程序进行编译,调试和修改; <6> 烧写代码(下载代码….)。
10.单片机系统复位后,(PSW)=00H,因 此内部RAM寄存区的当前寄存器是第几组,与 R0-R7对应关系。
11. 简述入栈和出栈SP的操作过程。
12. 影响标志位C、P、OV的指令有哪几类, 具体给出几条例子。
13. 8052中SP最大使用空间可以是多少?位 于何处?
14. LCALL执行前SP=6FH,进行后SP=?
(a)共阴极
gnd
Vcc
单片机与嵌入式系统
28.06.2020
20
编码
D7 D6 D5 D4 D3 D2 D1 D0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
a b c d e f g dp 01 01 01 01 01 01 10 10
显示字形“0123456789AbCdEFP”.””,,,编编编码码码:::87635130HH 092411FDC359HHH1H