资源描述
第一章 单片机:
把中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、定时/计数器、输入/输出(I/O)接口电路等主要的计算机部件集成在一块集成电路芯片上的单片微型计算机。简称单片机。
第二章 单片机内部结构:
Ø 一个8位CPU
Ø 128字节内部数据存储器(RAM)
Ø 4K内部程序存储器
Ø 2个16位的定时/计数器
Ø 四个8位的I/O口
Ø 一个全双工的串行口
Ø 5个中断源:2个外部中断,2个定时/计数中断,1个串行中断
Ø 时钟电路
Ø 总线
外部引脚:40个(名称)
Ø 四个8位并行口(32):P0口、P1口、P2口、P3口
Ø 电源(2)
Ø 晶振(2):XTAL1、XTAL2
Ø 控制线(4):
ALE:地址锁存控制信号
:外部程序存储器读选通信号
EA:访问程序存储器控制信号
RST:复位信号
内部RAM:地址:00H-FFH
Ø 00H-1FH:寄存器区
Ø 20H-2FH:位寻址区
Ø 30H-7FH:用户RAM区
Ø 80H-FFH:特殊功能寄存器区
1、 寄存器区(分组选择:RS0、RS1),8个通用寄存器R0-R7
2、 位寻址区
字节中的每一个位都具有地址,可直接对位进行操作。位地址:00H-7FH,128单元
3、 3用户RAM区: 30H-7FH,在该区设置堆栈。
1)堆栈:按照“先进后出,后进先出”的原则进行存取的内存区域。用于保护程序断点和数据。
2)堆栈的开辟:用SP指针设置栈底。
堆栈区: (SP)初+1—>7FH
SP的初值为07H
3)堆栈的使用:
进栈操作:PUSH
出栈操作: POP
进栈操作:先SP加1,后写入数据;
出栈操作:先读出数据,后SP减1。
4、特殊功能寄存器:80H-FFH
共有21个特殊寄存器(SFR),离散地分布在该区域中,有些寄存器还可以进行位寻址。
分类:
CPU: PC(16位,程序计数器), ACC, B, PSW, DPTR, SP
并行口:P0, P1, P2, P3
中断: IE, IP
定时计数器:TMOD,TCON,TL0,TH0, TL1, TH1
串行口: SCON, SBUF, PCON
IE中断允许控制寄存器
IP中断优先级控制寄存器
PCON电源控制寄存器
SCON串行口控制寄存器
SBUF串行数据缓冲寄存器
TCON定时器控制寄存器
TMOD定时器方式选择寄存器
内部ROM:
4K ROM,地址为0000H-0FFFH
并行I/O口:
4个端口在结构上相同之处:
P0 -- P3都是准双向I/0口,作输人时,必须先向相应端口的锁存器写人 “1”。
4个端口在结构上不同之处:
P0口无内部上拉电阻,不能提供拉电流输出,而P1--P3则带内部上拉电阻,可以提供拉电流输出。
当P0口作通用I/0口输出使用时,需外接上拉电阻才可输出高电平。
引脚复用:
P0口:扩展时作为8位数据总线和低8位地址总线。
P2口:扩展时作为高8位地址总线。
P3口第二功能
1)振荡周期:振荡电路产生的方波信号的周期。T振=1/fosc
2)机器周期:计算机完成一种最基本的操作所需的时间。T机=12T振
3)指令周期:执行一条指令所需要的时间,用机器周期数表示。
复位电路:
功能:复位启动单片机。
复位条件:在RST引脚输入2个机器周期以上的高电平。正常工作时保持为低电平。
1) 初始化单片机,使PC初始化为0000H;2)初始化存储器。
寄存器
内容
寄存器
内容
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
B
00H
TL0
00H
PSW
00H
TH0
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0-P3
FFH
SCON
00H
IP
00H
SBUF
不定
IE
00H
PCON
00H
第三章 单片机指令系统
机器语言:用二进制编码表示的指令。
汇编语言:用助记符表示的指令。
指令系统:计算机所能执行的指令集合。
寻址方式:寻找操作数地址的方法。操作数的表示方法。
7种寻址方式:
1) 立即寻址:操作数在指令中。
MOV A,#70H
MOV DPTR,#1234H
2)直接寻址:内部RAM地址在指令中
MOV A,10H
ANL 70H,#48H
地址范围:内部RAM128字节,SFR
3)寄存器寻址:操作数在寄存器中。
MOV A, R1
MOV R7, #100
寄存器:R0-R7, A, B, DPTR
4)寄存器间接寻址:操作数地址在寄存器中。
MOV A,@R1
ANL A,@R0
寄存器:R0, R1, DPTR, SP
5)变址寻址:操作数地址在基址寄存器和变址寄存器中。
MOVC A, @A+DPTR
MOVC A, @A+PC
访问ROM单元数据。
6)相对寻址:转移地址(目的地址)的相对偏移量在指令中。
JC 80H
实际使用中使用标号,偏移量由汇编程序自动计算。
JC NEXT
7)位寻址:位地址在指令中。
MOV C,20H
位的表示方法:位名称,字节名称带点,字节地址带点,位地址。
MOV C, F0(PSW.5, D0H.5, D5H)
程序存储器数据传送
MOVC A, @A+PC
MOVC A, @A+DPTR
例:将ROM2000H单元数据送到A.
MOV DPTR,#2000H
MOV A,#0
MOVC A,@A+DPTR
数据交换指令
字节交换 XCH
半字节交换 XCHD 低四位交换,高四位不变。
累加器高四位与低四位互换 SWAP A
DEC A(Rn, direct, @Ri) 减1指令
INC 多一条 INC DPTR
控制转移指令
一、无条件转移指令
1)长转移: LJMP addr16; 64K
2)绝对转移:AJMP addr11; 同一个2K
3)相对转移:SJMP rel ;-128~+127
4)散转指令:JMP @A+DPTR
实际编程时使用目的地址标号
例: LJMP MAIN
SJMP NEXT
JBC bit, rel ; bit为1转移,且位bit清零
CJNE A, #data(direct),rel 不等转移
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
对Cy位有影响。
返回:RET
RETI ;中断子程序返回
空指令NOP
非:CPL C
CPL bit
汇编:将汇编语言翻译成机器语言;
伪指令:告诉汇编程序汇编方法的命令,不生成机器代码。
EQU:等值命令(定义常量)
例:X EQU 20H
Y EQU 21H
Z EQU 22H
程序中可用XYZ替代20H,21H,22H
DATA:数据地址赋值
X DATA 20H
Y DATA 21H
只能对累加器进行移位(RL、RR、RLC、RRC)A
CLR A CPL A
第四章 汇编程序设计
顺序程序
例:将40H单元中8位无符号二进制数转换成三位BCD码,并存放在BAI, SHI, GE三个单元中。
ORG 0000H
BAI DATA 30H
SHI DATA 31H
GE DATA 32H
MOV A, 40H
MOV B,#100
DIV AB
MOV BAI, A
MOV A,B
MOV B, #10
DIV AB
MOV SHI, A
MOV GE, B
SJMP $
END
分支程序
例:设变量X存放于R2, Y存放在R3,试按下式给Y赋值。
MOV A,R2
JNZ L1 ;累加器判非零转移
MOV R3,#0
SJMP L3
L1: JB ACC.7, L2
MOV R3, #1
SJMP L3
L2: MOV R3, #0FFH
L3: SJMP L3
END
循环程序
例:将内部RAM30H为首地址的20个数据传送到外部RAM3000H开始的单元。
MOV R0, #30H
MOV DPTR, #3000H
MOV R7, #20
LOOP: MOV A, @R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7, LOOP
HERE: SJMP HERE
子程序
例1:编程实现c=a2+b2
XA DATA 40H
XB DATA 41H
XC DATA 42H
MOV A, XA
ACALL SQR
MOV XC, A
MOV A, XB
ACALL SQR
ADD A, XC
MOV XC, A
SJMP $
SQR: MOV B, A
MUL AB
RET
例2: 多重循环
5ms延时程序,设fosc=6MHz 机器周期为2μs
DELAY: MOV R6, #5 ;循环5次
DEL1: MOV R7, #250 ;循环250次
DEL2: DJNZ R7, DEL2 ;2× 250×2μs=1ms
DJNZ R6, DEL1 ;5×1ms=5ms
RET ;DJNZ为两个机器周期
查表程序设计
1.表格的定义:
使用伪指令:DB,DW
例:TAB: DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH,7DH, 07H, 7FH, 6FH
DB 77H, 7CH
2.表格的访问:
MOVC A, @A+DPTR
MOVC A, @A+PC
例:已知R0低4位有一个十六进制数(0-F),编程转换成相应的ASCII码并送入R0.
MOV A, R0
ANL A, #0FH
ADD A, #03H ;PC本身是一个程序计数器,
计算偏移量(查表指令的下一条指令首地址到表格首地址之间的字节数)
MOVC A, @A+PC
MOV R0,A 1个字节
SJMP $ 2个字节
ASCTAB: DB ‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’
DB ‘8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’
上例用DPTR做基址的程序如下:
MOV @DPTR,# ASCTAB
MOV A, R0
ANL A, #0FH
MOVC A, @A+DPTR
MOV R0,A
SJMP $
ASCTAB: DB ‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’
DB ‘8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’
把内部RAM中起始地址为BLK1的数据块传送到外部RAM中以BLK2为起始地址的区域,直到遇到“#”为止。数据块长度放在R1中。
1)循环程序包含分支程序。
2)计数循环,采用间接寻址。
BLK1 EQU 30H
BLK2 EQU 1000H
MOV R0, #BLK1
MOV DPTR, #BLK2
XH: CLR C
MOV A,@R0
PUSH ACC
SUBB A,#23H
JZ JS
POP ACC
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1, XH
JS: SJMP $
编程实现下面的功能:
LED0 EQU P3.0
LED1 EQU P3.1
LED2 EQU P3.2
LOOP: MOV A, P1
CLR C
SUBB A,#100
JZ EQUAL
JC SMALL
CLR LED0
CLR LED1
SETB LED2
SJMP OK
EQUAL: CLR LED0
SETB LED1
CLR LED2
SJMP OK
SMALL: SETB LED0
CLR LED1
CLR LED2
OK: SJMP LOOP
例3: 在P1.0引脚输出1HZ方波信号。
ORG 0000H
LOOP: MOV R1,#100
WAIT: LCALL DELAY
DJNZ R1, WAIT
CPL P1.0
SJMP LOOP
第五章 单片机内部资源
中断:由外设向CPU提出请求,在满足一定条件下,CPU暂停现有程序的运行,而去运行中断服务程序(中断子程序),执行结束后返回原先的程序继续运行。
中断源:向CPU请求中断的事件。
中断响应条件
1)中断源的请求
2)中断允许位开放
3)中断总允许位开放
4)若有多个中断源同时请求,则本中断源优先级最高
5)CPU没有执行中断任务或本中断优先级高于正在执行的中断源的优先级
定时方式与计数方式区别:脉冲来源
定时方式:计数脉冲来自单片机内部,每个机器周期加1。
计数方式:计数脉冲来自单片机外部引脚
串行口
通讯方式:
并行通讯:多位数据同时传送。速度快,效率高。需要有与数据位相等的数据线。
串行通讯:数据按位传送。使用较少的数据线,成本低。速度较慢。
数据格式:
起始位(低电平)+数据位+停止位(高) +空闲位(高)
数据位:低位在前,高位在后。
波特率:串行通讯中,每秒钟传送二进制数码的位数。
通讯方向:
单工方式:一方固定为发送,另一方固定为接收,数据单向传送。
双工方式:数据可以双向传送。
半双工: 可以双向传送,但在同一时刻,数据的传送方向只能有一个。
全双工:数据可以同时收发。
. 串行口引脚
接收引脚: RXD(P3.0)
发送引脚: TXD(P3.1)
数据缓冲寄存器:SBUF,(99H)
结构:一个发送寄存器,一个接收寄存器
作用:用于收发数据
发送: MOV SBUF,#10H
MOV SBUF,A
读取: MOV A, SBUF
MOV 20H,SBUF
波特率设计
1)方式0: 固定
fCLK=fosc/12
2)方式2: 固定
波特率=2SMOD*fosc/64
3)方式1,3: 可变
波特率=(2SMOD/32)*T1的溢出率
第六章 单片机系统扩展
一、总线扩展
总线:连接系统中各个扩展部件的一组公共信号线。分为数据总线、地址总线和控制总线。
总线的构成
1)数据总线:8位
P0.0~P0.7:D0~D7
2)地址总线:16位
P0.0~P0.7, P2.0~P2.7: A0~A15
3)控制总线:3
PSEN, RD,WR
构成接口芯片片选信号的两种方法:
1)线选法:用高位地址线直接作为接口芯片的片选信号。
2)译码法:用译码器对高位地址线进行译码后作为片选信号。
译码器:
2-4译码器: 74LS139
3-8译码器: 74LS138
4-16译码器:74LS154
扩展方法
芯片的数据线与数据总线相连,
地址线与地址总线或片选信号线相连,
控制线与控制总线相连。
访问方法:
1)以PSEN作为控制线:
与片外ROM统一编址
读: MOVC A,@A+DPTR
MOVC A,@A+PC
2)以RD,WR作为控制线:
与片外RAM统一编址
读: MOVX A,@DPTR
MOVX A,@Ri
写: MOVX @DPTR,A
MOVX @Ri,A
二、存储器扩展
程序存储器型号
1)ROM
2)EPROM:电可编程只读存储器
2716: 16Kbit, 2Kbyte
2732: 32Kbit
2764: 64Kbit
27128:
27256:64Kbyte
3)EEPROM:电擦除电编程ROM
2817: 2Kbyte
2864: 64Kbit
数据存储器型号
采用静态RAM(Static RAM)
6116: 16Kbit
6264: 64Kbit or 8Kbyte
62256: 32Kbyte
628128: 128Kbyte
三、键盘接口
接口形式
1)独立式键盘:每个键单独地接I/O线。
特点:接口简单,但需较多的I/O线。
2)行列式键盘:每个键跨接在行线和列线上。
特点:占用较少的I/O线,编程较复杂
去抖动:
原因:键被按下时,由于机械触电的弹性以及电压突跳等原因,在触电闭合及释放的瞬间将出现电压抖动。
方法:软件和硬件
软件去抖动——延迟10-20ms进行再次扫描。
例:用A记录按键次数。
MOV A,#0
LOOP: JB P1.0, LOOP
LCALL DELAY
JB P1.0, LOOP
INC A
WAIT: JNB P1.0, WAIT
SJMP LOOP
四、LED数码管:
类型:共阴数码管、共阳数码管
接口方式:
1)静态显示方式:
位选信号固定为高电平(共阳数码管)或低电平(共阴数码管),段选信号接I/O线。
特点:接口简单;容易编程;亮度较高;需要较多的I/O线,功耗高。 8*n
2)动态显示方式
所有数码管的段选线并联后连接I/O线,各数码管的位选单独连接到I/O线。
原理:动态轮流显示,输出数码管的显示码,然后输出位选信号,使得该数码管位选有效(共阴数码管为0,共阳数码管为1),而其他数码管无效;延时几毫秒,关闭位选,显示下一个数字。
特点:较少的I/O线,8+n,编程较复杂,占用较多的CPU时间
A/D接口
ADC0809: 8位,8通道,逐次逼近式A/D转换器,转换时间100us
D/A转换器
D/A转换器主要技术指标
1)分辨率:最小输出电压与最大输出电压之比。
如:8位A/D 1/255,
10位A/D 1/1023
2)建立时间
3)输出方式:电流,电压
4)输入代码:二进制,BCD,串行
DAC0832
1.特点:8位分辨率,总线接口,单电源
展开阅读全文