1、 任课教师:孟建华 08级自动化04班单片机原理及应用2.1基本结构基本组成中央处理器 (CPU)存储器输入/输出接口CPU字长8位 00H 0FFH无符号数 0 255有符号数 -128 127寻址空间16位地址 64KB2工作频率0 40MHz程序存储器0 / 4KB / 8KBROM / PROM (OTP)(UV)EPROM / E2PROM / FLASH数据存储器128B / 256BSRAM特殊功能寄存器(SFR)21 (26)个控制管理片内各功能模块并行口4个8位并行双向I/O接口电路P0、P1、P2、P3串行口(UART)1个串行全双工异步接口4种工作方式定时/计数器2 /
2、3个16位 0000H 0FFFFH 655364种工作方式中断系统5 / 6个中断源2个中断优先级时钟电路片内振荡器及时钟产生电路需外接晶振总线结构布尔处理机 实现位操作命名方式NNCNN1 -51子系列2 -52子系列 增强型3 片内无程序存储器5 片内有程序存储器 NMOS或HMOSC CMOS或CHMOS(低功耗)S 支持ISP(在线编程)0 掩模ROM7 (UV)EPROM9 FLASH8数据存储器程序存储器定时/计数器中断源-51128B4KB25-52256B8KB3680318051875189C5189S522.2引脚封装形式DIP (Double In-line Packa
3、ge) 双列直插式PLCCLQFP引脚功能40条引脚电源线(2条)VCC电源线+5VVSS接地线GND时钟引脚(2条)XTAL1和XTAL2Crystal片内振荡电路输入输出端有生命,生物,心跳端口线(8 4 = 32条)4个8位并行I/O端口P0、P1、P2、P3单片模式扩展模式P0I/O口数据总线低8位地址总线(分时复用)P1I/O口I/O口P2I/O口高8位地址总线第二功能注 释P3.0RXD串行数据接收口P3.1TXD串行数据发送口P3.2INT0(_)外部中断0输入口P3.3INT1(_)外部中断1输入口P3.4T0计数器0计数脉冲输入口P3.5T1计数器1计数脉冲输入口P3.6WR
4、)片外数据存储器写选通信号输出口P3.7RD(_)片外数据存储器读选通信号输出口控制线(4条)RST / VPD (9)Reset复位信号输入端单片机正常工作的保证24个时钟周期的高电平12MHz1/12s2s上电复位手动复位VPDVoltage Power Down备用电源EA(_) / VPP (31)External Access Enable片外程序存储器访问允许输入端EA(_)=0时,CPU访问片外程序存储器EA(_)=1时,CPU访问片内程序存储器VPPVoltage Pulse of Programming编程电源ALE / PROG(_) (30)Address Latch
5、 Enable地址锁存允许信号输出端 单片机上电正常工作后,ALE引脚不断向外输出正脉冲信号,频率为振荡器频率fosc的1/6。12MHz2 MHz CPU访问片外存储器时,该信号作为将P0口输出的低8位地址锁存到片外地址锁存器中的控制信号。ALE = 1P0地址总线ALE = 0P0数据总线PROG(_)Programming编程脉冲输入端编程器、烧录器、写入器PSEN(_) (29)Program Store Enable片外程序存储器读选通信号输出端应用模式工作状态单片模式扩展模式编程状态2.3存储器配置哈佛结构MCS-51单片机 程序存储器和数据存储器分开设计。普林斯顿结构微机 只有一
6、个地址空间,程序和数据可以随意安排在这一地址范围内不同的空间。程序存储器(ROM) 指令、常数掉电不失数据存储器(RAM) 数据可用程序改写 在单片机内部,程序存储器和数据存储器存贮器是分开制造的。通常,程序存储器的容量较大,数据存储器的容量较小,这是单片机用作控制的一大特点。程序存储器数据存储器片内4KB128B片外64KB64KB物理上有4个存储空间片内程序存储器片外程序存储器片内数据存储器片外数据存储器逻辑上有3个存储空间片内外统一编址的程序存储器 MOVC片内数据存储器 MOV片外数据存储器 MOVX程序存储器EA(_)输入引脚E(_)A(_) = 0访问片外程序存储器E(_)A(_)
7、 = 1访问片内程序存储器程序计数器PC 16位程序地址寄存器,专门用来存放下一条需要执行指令的地址,能自动加1。 PC指示程序执行的位置 PC中存放的是程序存储器的地址 PC中存放下一条将要执行的指令的地址复位后 PC = 0000H寻址范围:0000H 0FFFFH64KB 65536B入口地址入口地址复位0000HINT0(_)0003HT0000BHINT1(_)0013HT1001BH串行口0023HT2002BH 通常,在入口地址处写一条跳转指令,跳转至服务程序。0000HLJMP0030H0003HLJMP1000H000BHLJMP2000H0030H主程序1000HINT0中
8、断服务程序RETI2000HT0中断服务程序MOVC常数MOVC指令 MOVDPTR, #2000HMOVA, #08HMOVCA, A+DPTR片外数据存储器最大64KB0000H 0FFFFH只可用MOVX指令间接寻址方式访问读:MOVDPTR, #2008HMOVXA, DPTR写:MOVA, #12HMOVDPTR, #2008HMOVXDPTR, A片外数据存储器与片外I/O设备统一编址(如A/D、D/A、I/O芯片等)片内数据存储器(低128B)地址范围:00H 7FH通用数据区 (30H7FH)80个字节用于存放的用户数据或作堆栈区使用。读:MOVA, 30H;直接寻址 MOVR
9、0, #30HMOVA, R0;间接寻址INCR0写:MOVA, #12HMOV30H, A位寻址区 (20H2FH)16个字节即可按字节寻址,又可按位寻址8 16 = 128位用途:开关决策、逻辑电路仿真、实时控制位地址空间:00H 7FH位操作指令:SETBCLRCPLJBJNB2FH字节的位地址:D7D07FH7EH7DH7CH7BH7AH79H78H将2FH字节的最高位置“1”不能影响其它位 SETB7FH ORL2FH, #10000000B MOV2FH, #10000000B最高位清“0” CLR7FH ANL2FH, #01111111B若 2FH 字节的最高位为“1”,则跳转
10、到LED_ON JB7FH, LED_ON若 2FH 字节的最高位为“0”,则跳转到LED_OFF JNB7FH, LED_OFF工作寄存器区 (00H1FH) 32个字节 4个工作寄存器组 每组8个工作寄存器 R0 R7 由RS1、RS0两位决定目前使用哪组工作寄存器RS1RS0组号000011102113方便快速保护现场主程序(0组)MOVR0, #12H;(00H)12H(程序中断)INCR0中断服务程序(2组)PUSHPSWSETBRS1CLRRS0; bank2MOVR0, #34H;(10H)34HPOPPSWRETI工作寄存器的功能: MOVR0, #30HMOVA, R0;间接
11、寻址寄存器与存储器的区别:存储器:容量大 速度慢 有地址寄存器:容量小 速度快 有名字MCS-51统一编址速度一致 MOVA, R0;1 byte MOVA, 00H;2 bytes片内数据存储器(高128B)地址范围:80H 0FFH仅52子系列有只可用间接寻址方式访问 MOVR0, #80HMOVA, R0;间接寻址MOVA, 80H;直接寻址SFR特殊功能寄存器(SFR)地址范围:80H 0FFH只可用直接寻址方式访问21个51子系列26个52子系列离散分布 控制、管理各个功能模块(中断、定时器、串行口)控制寄存器状态寄存器数据寄存器符号寄存器名称地址ACC累加器0E0HBB寄存器0F0
12、HPSW程序状态字0D0HSP堆栈指针81HDPL数据指针低8位82HDPH数据指针高8位83HP0P0口寄存器80HP1P1口寄存器90HP2P2口寄存器0A0HP3P3口寄存器0B0HIE中断允许控制寄存器0A8HIP中断优先控制寄存器0B8HTMOD定时器方式选择寄存器89HTCON定时器控制寄存器88HTL0定时器0低8位8AHTH0定时器0高8位8CHTL1定时器1低8位8BHTH1定时器1高8位8DHSCON串行口控制寄存器98HSBUF串行数据缓冲寄存器99HPCON电源控制及波特率选择寄存器87H累加器ACC(Accumulator)具有特殊用途的8位寄存器专门用来存放操作数或
13、运算结果3 + 5 = ?MOVA, #3; A = 3ADDA, #5; A = 3 + 5通用寄存器B(General Purpose Register)8位专门为乘法和除法设置的寄存器3 5 = ?MOVA, #3; A = 3MOVB, #5; B = 5MULAB; BAAB程序状态字PSW (Program Status Word)8位标志寄存器用来存放指令执行后的有关状态可按位寻址D7D0CYACF0RS1RS0OV-PCY进位标志位OV溢出标志位AC半进位位(辅助进位位) 二进制加法 无符号数 有符号数 1111 1111 255 -1+) 0000 0001 +) 1 +)
14、1 1 1111 111 0000 0000 256 0CY=1最高进位位(进位标志位)(无符号数运算溢出标志位)CS=1次高进位位AC=1半进位位(辅助进位位)(用于BCD码调整)OV=0溢出标志位 = CYCS(有符号数运算溢出标志位)F0用户位RS1、RS0工作寄存器组选择控制位P奇偶标志位偶校验串行通信差错控制注意标志位(状态位)和控制位区别标志位(状态位)指示灯由硬件系统根据运行状态自动置“1”或清“0”,供用户通过指令查询、判断,决定程序的执行顺序。CY、AC、OV、P控制位开关由用户通过指令置“1”或清“0”,以控制相应的硬件功能模块。RS0、RS1TR1TR0写读标志位硬件软件
15、控制位软件硬件写控制位:SETBRS1; RS1 = 1CLRRS0; RS0 = 0判断标志位:JBOV, Overflow;若OV=1则跳转到 OverflowJNBOV, NOT_Overflow;若OV=0则跳转到 NOT_Overflow堆栈指针SP(Stack Pointer)8位寄存器专门用来存放堆栈的栈顶地址能自动加1和减1 堆栈是一种按 “后进先出”规律存取数据的存储区域处理中断、子程序调用栈区:片内RAM低128B不可对任意地址操作堆栈的操作压栈(入栈)PUSH弹栈(出栈)POPSP先加一,再入栈(向上生成)复位后 SP = 07H修改到 SP = 2FHMOVSP, #2
16、FH数据指针DPTR(Data Pointer)16位寄存器 由两个8位寄存器DPH和DPL拼装而成用来存放16位地址。用于访问程序存储器和片外数据存储器访问程序存储器MOVDPTR, #2000HMOVA, #08HMOVCA, A+DPTR访问片外数据存储器MOVDPTR, #2008HMOVXA, DPTRMOVA, #12HMOVDPTR, #2008HMOVXDPTR, A端口P0 P3寄存器端口端口字节单元P1引脚位P1.0输出锁存、输入缓冲MOVP1, #12HMOVA, #12HSETBP1.0SETBACC.0 字节地址可被8整除的寄存器可按位寻址 最低位位地址与字节地址相同
17、可按位寻址的寄存器:A B PSWP0 P3 不可按位寻址的寄存器:SP DPTR 地址的重叠与区分片内程序存储器vs片外程序存储器片外程序存储器 EA(_) = 0片内程序存储器 EA(_) = 1EA(_)输入引脚SETBEA程序存储器vs片内数据存储器vs片外数据存储器程序存储器 MOVC片内数据存储器 MOV片外数据存储器 MOVX例:访问程序存储器MOVDPTR, #0030HMOVA, #0MOVCA, A+DPTRMOVCA, 0030H访问片外数据存储器MOVDPTR, #0030HMOVXA, DPTRMOVXA, 0030H访问片内数据存储器MOVR0, #30HMOVA,
18、 R0orMOVA, 30H片内数据存储器高128B vs SFR高128B间接寻址方式MOVR0, #80HMOVA, R0SFR直接寻址方式MOVA, P0orMOVA, 80H字节地址vs位地址字节地址字节指令INC30HMOVA, 30H位地址位指令CPL30HMOVC, 30H2.4时钟内部时钟方式高增益反相放大器外接晶体 0 24MHz电容 30pF 帮助起振XTAL1XTAL2外部时钟方式时钟脉冲从XTAL1或XTAL2接入不同类型的芯片接法不一样多个芯片同时工作机器周期和指令周期振荡周期 晶振振荡周期 最小时间单位机器周期 计算机执行一种基本操作的时间单位 CPU访问一次存储器
19、所需要的时间1机器周期 = 12振荡周期 1S12MHz6状态 (State)S1 S62拍(相位)(Phase)P1 P2S1P1 S1P2 S2P1 S2P2 S6P1 S6P2指令周期执行一条指令所需的时间1指令周期 = 1 4机器周期时间单周期双周期四周期乘除空间单字节双字节三字节pp350 附录ACPU取指、执行时序 每个机器周期,地址锁存信号ALE有效两次,CPU可访问两次存储器2.5复位复位操作的主要功能使单片机从一个稳定的初始状态开始工作上电复位手动复位复位后各寄存器的状态:PC0000HSP07HP0P30FFH (输入状态)片内RAM不定SBUF不定其他清“0”(功能关闭)
20、MOVSP, #2FH复位信号及其产生RST引脚复位信号:高电平24振荡周期2机器周期2s 12MHz复位电路上电复位手动复位复位芯片2.6低功耗工作方式便携式电池供电方式的设定PCON (87H)D7D0SMOD-GF1GF0PDIDL不可按位寻址SMOD波特率倍频位GF1通用标志GF0通用标志PD掉电方式位IDL空闲方式位空闲(等待、待机)工作方式CPU停止工作其它部件工作中断定时器串行口功耗降低为20% 正常工作电流20mA 空闲状态电流5mA进入方式:ORLPCON, #00000001BSETBIDL退出方式:中断硬件复位掉电(停机、休眠)工作方式所有部件停止工作片内RAM内容保留功
21、耗最低电压2V电流75A进入方式:ORLPCON, #00000010BSETBPD退出方式:硬件复位2.7输入/输出端口概述4个P0、P1、P2、P38位准双向口正确、合理使用端口I/O口的功能单片模式扩展模式P0I/O口数据总线低8位地址总线(分时复用)P1I/O口I/O口P2I/O口高8位地址总线P3I/O口 或 第二功能第二功能注 释P3.0RXD串行数据接收口P3.1TXD串行数据发送口P3.2INT0(_)外部中断0输入口P3.3INT1(_)外部中断1输入口P3.4T0计数器0计数脉冲输入口P3.5T1计数器1计数脉冲输入口P3.6WR(_)片外数据存储器写选通信号输出口P3.7
22、RD(_)片外数据存储器读选通信号输出口I/O口的内部结构输出锁存器(D触发器)驱动器(场效应管)输入缓冲器(三态门)引脚特殊功能寄存器输出:MOVA, #12HMOVP1, A输入:MOVA, P1输出输入P0I/O口C=0开关向下漏极开路式外接上拉电阻读引脚 先写“1”读锁存器总线C=1开关向上推拉式读引脚P1I/O口内部有上拉电阻的漏极开路读引脚 先写“1”读锁存器P2I/O口开关向左同P1同P1总线开关向右同P1-P3I/O口W=1同P1同P1第二功能Q=1漏极d 栅极g源极sMOVP1, #0FFHMOVA, P1MOVR1, #0FFHMOVA, R1I/O口的读操作读引脚 MOV
23、A, P1先写“1”读锁存器CPLP1.0“读-修改-写”指令输出驱动三极管SETBP1.0CPLP1.0I/O口的写操作及驱动能力MOVP1, AS6P2写入锁存器P08个LS型TTL门P14P24P342.8布尔处理器功能位操作开关决策逻辑电路仿真实时控制资源CPU位处理器寄存器位累加器CY存储器可按位寻址空间(1) 片内数据存储器20H2FH单元(2) 部分SFRI/O口P0.0P0.7P1.0P1.7P2.0P2.7P3.0P3.7指令位指令SETB00HCLRCCPLP1.0JBOV, Overflow3.1指令系统概述指令和程序设计语言指令指令系统程序程序设计高级语言编译汇编语言汇
24、编机器语言A = 10 + 2074 0AMOVA, #0AH24 14ADDA, #14H指令格式 操作码 操作数,操作数,操作数42个助记符MOVADD+ 不同的寻址方式MOVA, #12HMOVA, R0111条指令MOVA, Rn255个机器码A5除外反汇编破译加密指令分类按字节数分类 空间单字节指令49条双字节指令45条三字节指令17条学会正确计算指令字节数按指令周期分类 时间单周期指令64条双周期指令45条四周期指令2条按功能分类数据传送28算术运算24逻辑运算25控制转移17位操作17符号注释RnR0 R7 工作寄存器RiR0、R1 地址寄存器#data8位立即数#data161
25、6位立即数direct8位直接地址(片内数据存储器)addr1111位目的地址(程序转移)addr1616位目的地址(程序转移)rel8位带符号数(补码 -128 +127)偏移量(程序转移)bit直接位地址间接寻址/位取反(X)X中的内容(X)由X指出的地址单元中的内容数据流向3.2寻址方式寻址方式:如何找到操作数的地址,并提取出来的方法直接寻址机器码助记符05 30INC30H85 40 30MOV30H, 40HMOVA, 40HMOV30H, A寄存器寻址机器码中不出现操作数的地址05 E0INCA04INCA08INCR0A3INCDPTRE8MOVA, R0A4MULAB84DIV
26、AB05 90INCP1;P1是寄存器,不是寄存器寻址05 90INC90HE5 30MOVA, 30HE5 90MOVA, P1E5 F0MOVA, B立即数寻址74 30MOVA, #30HE5 30MOVA, 30H90 12 34MOVDPTR, #1234H75 30 40MOV30H, #40H75 81 2FMOVSP, #2FH寄存器间接寻址08INCR006INCR0E6MOVA, R0E0MOVXA, DPTR;片外RAM读F0MOVXDPTR, A;片外RAM写变址寻址93MOVCA, A+DPTR83MOVCA, A+PC;当前PC值仅有的两条使用变址寻址方式的指令仅有
27、的两条访问程序存储器的指令位寻址直接寻址C2 30CLR30HD2 30SETB30H位地址的表达方式:直接位地址位名字节名.位号字节地址.位号D2 D4SETB0D4HD2 D4SETBRS1D2 D4SETBPSW.4D2 D4SETB0D0H.4D2 90SETBP1.0D2 D7SETBCD3SETBCA2 30MOVC, 30HE5 30MOVA, 30H相对寻址寻找程序转移的目的地址绝对寻址:地址机器码助记符ORG0000H000002 00 30LJMPMAINORG0030H003074 12 MAIN:MOVA, #12H相对寻址:地址机器码助记符ORG0000H000080
28、 2ESJMPMAIN(0030H 0002H = 2EH)0002ORG0030H003074 12 MAIN:MOVA, #12HORG0050H005080 DESJMPMAIN(0030H - 0052H = -22H = 0DEH)0052rel8位带符号数(补码 -128 +127)偏移量(程序转移)80 FESJMP$80 FE HERE:SJMPHEREB4 12 XXCJNEA,#12H,NOT_EQU3.3数据传送指令28条最基本、最主要的操作以累加器A为目的操作数的指令4条MOVA, RnMOVA, directMOVA, RiMOVA, #data以寄存器Rn为目的操作
29、数的指令3条MOVRn, AMOVRn, directMOVRn, #data非法指令:MOVR1, R0MOVR7, R0以直接地址为目的操作数的指令5条MOVdirect, AMOVdirect, RnMOVdirect, directMOVdirect, RiMOVdirect, #data例MOV30H, 40HMOVA, 40HMOV30H, A以间接地址为目的操作数的指令3条MOVRi, AMOVRi, directMOVRi, #data16位数据传送指令1条MOVDPTR, #data16; DPTRdata16例MOVDPTR, #1234H查表指令2条MOVCA, A+DP
30、TR; A(A+DPTR)ROMMOVCA, A+PC; A(A+PC)ROM仅有的两条访问程序存储器的指令仅有的两条使用变址寻址方式的指令例 程序存储器1010H24H1011H05H1012H16H1013H08HORG1000H1000HMOVA, #0DH1002HMOVCA, A+PC1003HMOVR0, A0DH + 1003H = 1010H(A) = 02HORG7010HDB02HDB04HDB06HDB08H例 程序存储器7000H65H7010H52H7011H64H7012H36H7013H78HMOVDPTR, #7000HMOVA, #12HMOVCA, A+DP
31、TR累加器A与片外RAM传送指令4条MOVXA, DPTR;A(DPTR)片外RAMMOVXDPTR, A ;(DPTR)(A)片外RAMMOVXA, Ri;A(Ri)片外RAMMOVXRi, A;(Ri)(A)片外RAM高8位地址由P2口决定唯一的4条访问外部数据存储器的指令例片外RAM 1000H单元中的数 片外RAM 2000H单元MOVX2000H, 1000HMOVDPTR, #1000HMOVXA, DPTRMOVDPTR, #2000HMOVXDPTR, A输入/输出指令片外数据存储器与片外I/O设备统一编址(如A/D、D/A、I/O芯片等)堆栈操作指令2条PUSHdirect;
32、 SPSP+1 (SP)(direct) 间接直接POPdirect; direct(SP) SPSP-1 直接间接例利用堆栈交换70H单元和71H单元的内容MOVSP, #2FHPUSH70HPUSH71HPOP70HPOP71H70H71HXY错误指令正确指令PUSHAPUSHACCPOPAPOPACCPUSHR0PUSH00HPOPR0POP00HSETBACC.0交换指令4条XCHA, Rn ;(A)(Rn)XCHA, direct ;(A)(direct)XCHA, Ri ;(A)(Ri)XCHDA, Ri ;(A)30(Ri)30例交换30H单元和31H单元的内容XCH30H, 3
33、1HMOVA, 30HMOV30H, 31HMOV31H, AMOVA, 30HXCHA, 31HMOV30H, A30H31HAXYXYXY例交换片外RAM 3000H单元和片内RAM 30H单元的内容MOVDPTR, #3000HMOVXA, DPTRMOVR0, #30HXCHA, R0MOVXDPTR, A片外3000H片内30HDPTRAR0XY3000HX30HYXY3.4算术运算指令24条加法指令ADDA, Rn;A(A)+(Rn)ADDA, direct ;A(A)+(direct)ADDA, Ri;A(A)+(Ri)ADDA, #data;A(A)+data例MOVA, #0C3HMOVR0, #0AAHADDA, R0 二进制加法 无符号数 有符号数 1100 0011 195 -61+) 1010 1010 +) 170 +) -86 1 0000 01 0110 1101 365 -147CY=1最高进位位(无符号数运算溢出标志位)CS=0次高进位位AC=0辅助进位位(半进位位)OV=1溢出标志位 = CYCS(有符号数运算溢出标志位)带进位加法指令ADDCA, Rn;A(A)+(Rn)+CYADDCA, direct ;A(A)+(direct)+CYADDCA, Ri;A(A)+(