版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MCS-51汇编语言程序设计单片微型计算机原理与接口技术核心课程Contents课程目录MCS-51单片机原理与应用课程核心章节概览01MCS-51硬件结构与工作原理02指令系统与寻址方式03汇编语言程序设计方法04中断系统与定时计数器05串行通信与接口技术CHAPTER01MCS-51硬件结构与工作原理从CPU核心、存储器组织到I/O端口的系统级认知MICROCONTROLLERMCS-51单片机概述MCS-51是经典的8位单片机架构,将CPU、ROM、RAM、定时器、串行口和并行I/O端口集成在单一芯片内,形成了完整的微型计算机系统。其"片内集成"的设计理念使其在工业控制、智能仪表和消费电子领域获得了广泛应用。架构与总线Intel于1980年推出,采用哈佛总线结构,8位数据总线和16位地址总线,可寻址64KB外部存储空间。64KB片内集成4KBROM、128BRAM、2个16位定时器、全双工串行口和4个8位并行I/O端口,形成完整最小系统。4×I/O兼容型号AT89C51、STC89C52、STC15系列等典型型号,指令集完全兼容并增强了Flash存储和ISP下载功能。STC15应用领域广泛应用于工业控制、智能仪表、家电控制和数据采集等领域,是嵌入式系统开发的基础平台。嵌入式ArchitectureCPU核心结构与运算器MCS-51的CPU以8位ALU为核心,通过累加器ACC、B寄存器和程序状态字PSW协同完成算术与逻辑运算。01算术逻辑单元8位ALU支持加减乘除四则运算及与、或、异或、取反等逻辑操作,结果状态反映在PSW中8-bitALU02累加器ACC最频繁使用的特殊功能寄存器,大部分数据传送和运算指令都以ACC为操作对象核心寄存器03B寄存器仅在乘除法指令中使用,运算时自动配合ACC完成16位结果的高低位存放MUL/DIV04程序状态字PSW包含CY进位、AC辅助进位、OV溢出、P奇偶校验等标志位,直接控制条件转移指令的跳转判断CY·OV·AC·P05控制器由指令寄存器IR、指令译码器ID和程序计数器PC组成,按"取指-译码-执行"周期自动运行程序IR·ID·PCMEMORYARCHITECTURE存储器组织结构MCS-51采用哈佛结构,程序存储器与数据存储器独立编址各64KB。片内RAM虽仅128字节,但划分为工作寄存器区、位寻址区和通用RAM区三个功能层次,配合21个SFR构成了灵活高效的存储管理体系。程序存储器·ROM片内4KBROM地址从0000H开始,复位后PC指向0000H即程序入口外部ROM可扩展至64KB,当EA引脚接低电平时强制从外部ROM读取指令中断向量表固定在ROM特定地址:外部中断0在0003H,定时器0在000BH数据存储器·RAM4组工作寄存器(R0–R7)占据低32字节,通过PSW的RS1/RS0位切换当前寄存器组20H–2FH为位寻址区,128个可寻址位支持位操作指令直接读写单个二进制位高128字节(80H–FFH)与SFR地址重叠,需使用间接寻址方式访问特殊功能寄存器·SFR21个SFR分布在80H–FFH地址空间,集中管理I/O端口、中断、定时器和串行通信P0–P3端口寄存器地址分别为80H、90H、A0H、B0H,可直接位寻址SP堆栈指针复位值为07H,实际编程中通常初始化为30H以上以避免冲突MCS-51单片机·40脚DIP封装实物MCS-51Architecture并行I/O端口结构与功能MCS-51的P0-P3四个并行端口各有不同的内部结构和专用功能。P0口需外接上拉电阻且复用为地址/数据总线,P3口具有第二功能(中断、串口、定时器),掌握各端口的电气特性和复用规则是硬件接口设计的基础。P0开漏输出·总线复用内部无上拉电阻,用作通用I/O时必须外接10KΩ上拉电阻;扩展外部存储器时复用为低8位地址和数据总线。Open-DrainP1内部上拉·纯通用I/O内部有上拉电阻,可直接输出高电平驱动LED等负载,是四个端口中最纯粹的通用I/O接口。StandardGPIOP2高8位地址总线内部有上拉电阻,扩展外部存储器时自动输出高8位地址,锁存器内容不变;不扩展时可作通用I/O。Addr-HighP3多功能复用端口每个引脚均有第二功能:RXD串口接收、TXD串口发送、INT0/INT1外部中断等关键外设信号。Multi-FunctionMCS-51基础架构时钟电路与复位机制时钟信号是单片机运行的"心跳",复位是系统启动的"起点"。MCS-51的12分频机器周期机制和上电/按键双重复位设计,保证了系统可靠启动和精确时序控制。01时钟电路采用晶振+两个30pF电容的并联谐振结构,常用频率为12MHz和11.0592MHz,后者可精确产生标准串口波特率11.0592MHz02机器周期一个机器周期包含12个振荡周期,12MHz晶振下机器周期为1μs,所有指令执行时间都是机器周期的整数倍12:1分频03上电复位通过RC充电电路在RST引脚产生高电平脉冲实现,确保VCC稳定后PC清零从0000H开始执行0000H04按键复位在RC电路并联按钮开关,按下时RST被拉高实现手动复位,便于调试和系统异常恢复RST高电平Chapter02指令系统与寻址方式111条指令的五大分类与七种寻址方式的系统解析MCS-51·Assembly数据传送类指令数据传送指令是MCS-51汇编程序中使用最频繁的指令类别,涵盖内部RAM传送(MOV)、外部RAM传送(MOVX)、ROM查表(MOVC)和堆栈操作(PUSH/POP)四大类。正确使用这些指令是数据管理和程序流程控制的基础。内部RAMMOV内部传送实现片内数据快速传送,支持寄存器←立即数、寄存器←直接地址、直接地址←寄存器等多种寻址组合。执行周期短,不影响PSW标志位,是程序中最基础的数据搬运指令。reg←#data/direct64KB空间MOVX外部访问专用于外部扩展RAM的数据读写。通过@DPTR可寻址64KB全空间,@R0/R1仅访问低256字节。执行时自动产生RD/WR控制信号,P0口分时传送地址低8位和数据。@DPTR/@R0/@R1ROM查表MOVC程序查表从程序存储器ROM中读取常数表格,是查表程序的核心指令。MOVCA,@A+DPTR以DPTR为表基址、A为偏移量;MOVCA,@A+PC以当前PC为基址,适合访问局部表格。@A+DPTR/@A+PC堆栈操作PUSH/POP堆栈实现后进先出的堆栈数据管理。PUSHdirect先将SP加1,再将直接地址内容压入栈顶;POPdirect先将栈顶内容弹出到直接地址,再将SP减1。用于保护现场和参数传递。SP←SP±1InstructionSet控制转移与程序调用指令控制转移指令是实现程序流程控制的核心工具,包括无条件跳转、条件跳转和子程序调用三大类。灵活运用这些指令可以构建分支、循环和多模块程序结构。无条件跳转LJMPaddr16可跳转到64KB程序空间任意地址(3字节指令),AJMPaddr11跳转范围为2KB(2字节),SJMPrel跳转范围±127字节64KB累加器与进位判断JZ/JNZ根据累加器A是否为零决定跳转,JC/JNC根据进位标志CY决定跳转,是分支程序的核心指令JZ/JC位条件检测JBbit,rel检测指定位为1则跳转,JNB检测为0则跳转,JBC检测为1则跳转并清零该位JB/JBC循环计数控制DJNZRn,rel将Rn减1后若不为0则跳转,是循环程序最常用的计数控制指令,可循环256次256次MCS-51InstructionSet位操作指令与布尔处理MCS-51内置布尔处理器,可直接对128个可寻址位和可位寻址SFR进行位级操作。位操作指令包括位传送、置位、清零、取反、位逻辑运算和位条件转移,在I/O控制和标志位管理中具有独特的编程优势。位传送指令MOVC,bit和MOVbit,C实现进位标志与可寻址位之间的位传送,是位操作中最基本的数据传送指令。MOV置位·清零·取反SETBbit将指定位置1,CLRbit清零,CPLbit取反,这三条指令在I/O端口控制中使用频率极高。I/O控制位逻辑运算ANLC,bit实现位与运算,ORLC,bit实现位或运算,可对多个条件进行逻辑组合判断。逻辑组合位条件转移JB/JNB/JBC三条指令根据指定位的状态决定程序走向,JBC在跳转同时还会清零该位。JBCCHAPTER03汇编语言程序设计方法从顺序、分支、循环到查表与子程序的五种经典编程结构ASSEMBLYLANGUAGE程序设计概述与伪指令汇编语言程序设计遵循"需求分析→算法设计→流程图→编码→汇编→调试"的标准流程。伪指令虽不被CPU执行,但在程序组织中不可或缺:ORG控制代码定位、EQU定义符号常量、DB/DW定义数据表、END标记程序结束。01ORG—起始地址定位指定后续代码的起始地址,如ORG0030H将程序主入口设在0030H,避开中断向量表区域。在单片机开发中,常用ORG0000H放置跳转指令,再用ORG0030H开始主程序。0030H02EQU—符号常量定义为数值或地址定义可读的符号名,如COUNTEQU30H,后续用COUNT代替30H提高可维护性。修改常量时只需改一处定义,无需遍历代码。30H03DB/DW—数据定义DB定义字节数据(如TAB:DB0C0H,0F9H),DW定义字数据(16位),DS预留指定字节数的存储空间。常用于定义数码管段码表、查找表等。0C0H04END—程序终止标记标记源程序结束并可指定程序入口地址,汇编器遇到END后停止汇编处理。每个源文件必须有且只有一个END语句,通常位于文件末尾。ENDLOOPDESIGN循环程序设计循环结构通过DJNZ计数循环和CJNE条件循环两种方式实现代码重复执行。DJNZ指令集减1与条件判断于一体,是最高效的循环控制方式;对于超过256次的大循环,需采用多重循环嵌套结构。COREINSTRUCTIONDJNZ循环控制DJNZRn,rel是最常用的循环控制指令,Rn先减1再判断是否为0,不为0则跳转回循环起点,最大循环256次。≤256次EXAMPLERAM批量清零将内部RAM30H–3FH的16个字节清零,用MOVR0,#30H和MOVR2,#16初始化,循环体内CLRA、MOV@R0,A、INCR0。30H–3FHNESTING多重循环嵌套多重循环嵌套用于大范围计数,外层R2控制大循环、内层R3控制小循环,如R2=10、R3=200共执行2000次。10×200DELAY延时程序延时程序本质是空循环,通过精确计算指令机器周期数实现微秒级延时,嵌套循环可获得毫秒级延时效果。μs→msROMTABLELOOKUP查表程序设计查表程序利用MOVC指令从ROM数据表中读取预存数据,以空间换时间避免实时计算。DPTR基址变址查表灵活通用,PC相对查表紧凑但位置受限。查表法在段码显示、波形发生和代码转换等场景中不可或缺。DPTR基址变址查表MOVCA,@A+DPTR以DPTR为基址、A为偏移量从ROM查表,适用于表位置灵活且表长不受限制的场景。灵活通用·表长无限制PC相对查表MOVCA,@A+PC以PC为基址查表,数据表紧跟指令之后,需计算偏移补偿值,表长受限于PC寻址范围。代码紧凑·位置受限数码管段码表应用典型应用:TAB:DB0C0H,0F9H,0A4H…将显示数字0-9作为偏移量查表,获取对应段码驱动数码管显示。段码显示·0C0H–92H多字节偏移计算多字节数据表查表时需注意偏移量计算:每项占2字节则偏移量=A×2,可通过RLA或ADDA,Rn实现。偏移量=A×2MCS-51·汇编编程综合实例:LED流水灯程序LED流水灯程序综合运用顺序、循环和子程序三种编程结构,通过移位指令RL实现灯光移动效果、双层DJNZ嵌套实现毫秒级延时。01程序初始化:设置SP=30H避开工作寄存器区,将P1口置全1(关闭所有LED),然后进入无限循环主程序02主循环移位:R2计数8次,每次RLA左移一位改变亮灯位置,MOVP1,A输出到端口驱动LED显示03延时子程序:采用双层嵌套,外层R6=200、内层R7=248,每次DJNZ约2μs,总延时约100ms04无限循环:SJMPMAIN实现主程序无限循环,形成持续流水灯效果,体现嵌入式程序"永不退出"的运行特点单片机LED流水灯实验板·8路LED输出CHAPTER04中断系统与定时计数器实时事件响应机制与精确时间控制的硬件基础中断系统中断程序设计方法中断程序设计分为初始化配置和中断服务程序(ISR)编写两部分。初始化需设置触发方式、开放中断允许和优先级;ISR必须遵循保护现场→处理任务→恢复现场→RETI返回的标准流程,且执行时间应尽量短以保证系统实时性。01初始化步骤SETBIT0设置下降沿触发→SETBEX0开放外部中断0→SETBEA开放总中断,三步完成中断系统配置SETB×302入口地址定位中断服务程序入口用ORG0003H定位后LJMP到实际处理代码,避免与其他中断向量地址空间冲突0003H03ISR标准流程ISR内部先PUSH保护ACC、PSW等寄存器,处理完毕后按逆序POP恢复,最后用RETI返回以清除中断优先级触发器RETI04中断嵌套与优先级中断嵌套需设置IP优先级寄存器,高优先级中断可打断低优先级ISR,同级中断按自然优先级排队处理IPTIMERAPPLICATIONS定时/计数器应用实例定时器应用的核心是精确计算计数初值并合理选择工作方式。方式1适合一次性长定时,方式2的自动重装特性适合需要精确重复定时的场景如波特率发生和PWM输出。结合中断机制可实现毫秒级时间基准。TIMER0秒计时器T0方式1定时50ms(初值3CB0H),中断服务程序中计数20次得到1秒基准,驱动数码管显示时分秒。通过软件计数扩展定时范围,实现长时间计时功能。50ms×20=1sWAVEGEN方波发生器每次定时中断翻转I/O口电平,定时500μs输出1KHz方波驱动蜂鸣器,定时1ms输出500Hz。通过改变定时初值可灵活调整输出频率。500μs→1KHzPWMOUTPUTPWM输出用定时器控制高低电平持续时间比例实现脉宽调制,可用于LED亮度调节和电机速度控制。通过改变占空比实现输出功率的平滑调节。占空比可调0-100%COUNTERMODE频率计数器T1设为计数器方式1对外部脉冲计数,T0定时1秒后读取T1计数值即为信号频率(Hz)。双定时器协作实现精确频率测量。T0定时+T1计数Chapter05串行通信与接口技术全双工异步通信原理与多机通信协议实现MCS-51·SERIALCOMMUNICATION串行通信基础原理串行通信以位为单位逐位传送数据,异步通信通过起始位-数据位-校验位-停止位的帧格式实现收发同步。MCS-51的全双工串行口可同时进行发送和接收,波特率由定时器T1的溢出率决定,双方必须使用相同的波特率和帧格式。异步与同步:串行通信分为异步和同步两种方式,MCS-51采用异步通信,不需要时钟线,靠帧格式中的起始位实现同步帧格式:1位起始位(低电平)+8位数据位(低位在前)+1位停止位(高电平),共10位为最常用配置波特率:表示每秒传送的二进制位数,9600bps即每秒传送9600位,每位持续时间约104μs全双工:可同时进行发送和接收,MCS-51的TXD(P3.1)和RXD(P3.0)分别连接发送和接收数据线SERIALCOMMUNICATION串口通信编程实例双机通信程序需要收发双方使用完全相同的初始化配置。发送数据写入SBUF自动启动、TI标志表示发送完成;接收由RI标志通知、从SBUF读取数据。中断方式比查询方式更高效,适合实时通信场景。01初始化配置:MOVTMOD,#20H设置T1方式2→MOVTH1,#0FDH设波特率960
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年民政局慈善事业岗招聘笔试题及答案
- 2026中国污水处理膜材料进口替代空间测算报告
- 2026中国细胞治疗产品临床试验进展与支付体系研究
- 2026中国叶黄素酯临床试验数据解读与循证医学证据体系建设报告
- 2026贸易连锁经营行业市场深度调研及发展前景与投资前景研究报告
- 2026中国心血管介入耗材市场消费特征与渠道拓展策略报告
- 回顾往昔试题 给出答案指引
- SVN面试常见问题及精准答案
- 耳鼻喉疾病内镜诊疗技术新进展
- 护理临床实践与实习经验分享
- 单片机原理及接口技术C51编程第2版张毅刚 教学课件全套
- 供应商信息安全培训课件
- 自然流产教学课件
- 数字文旅概论 课件全套 第1-9章 数字文旅内涵与发展背景 - 数字营销
- 程序化广告运营知识培训
- 智慧园艺课件
- 2025年水务公司招聘考试题库
- 初中健康饮食课件
- 类风湿性关节炎病例分析
- 牛生产技术课件
- 生物实验安全课件
评论
0/150
提交评论