




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元五MCS 51单片机内部资源 5 1任务九单片机计数并显示 5 2任务十单片机流水灯控制 5 3任务十一两台单片机数据互传 返回主目录 学习目标 通过任务九的学习 完成 掌握单片机硬件资源定时计数器的使用 5 1任务九单片机计数并显示 任务描述 单片机对按键次数 99次 进行计数 并在发光二极管上实时显示 5 1 1硬件电路与工作原理 1 硬件电路 2 工作原理 用手按动按键S3 每按键一次S3引脚上出现一个负脉冲 单片机计数一次 并实时将按键次数以BCD码方式 在发光二极管上面显示 5 1 2控制程序 1 主程序流程 2 控制程序 ORG0000HLJMPMAINORG0030HMAIN MOVTMOD 06H 设定T0的工作方式MOVTH0 00H 设定计数初值MOVTL0 00H SETBTR0 启动计数器MOVP1 TL0 送显示END 5 1 3源程序的编辑 编译 下载 1 打开 伟福 模拟仿真软件进行程序的编辑 编译 1 正确选择单片机类型8751或80312 正确选择编译器 伟福编译器3 选择模拟仿真功能4 打开或新建文件进行编辑5 编译2 打开 ISP下载软件 将目标文件下载到ISP 4实验开发板上的AT89S51单片机芯片 观察程序运行结果 1 编译成功后打开下载软件2 选择好单片机89S51并测试3 打开伟福6000编译生成的 BIN或 HEX文件4 选择自动写完成擦除 写 读 校验过程5 观看运行结果 5 1 4相关知识 1 单片机是如何进行计数的 本次任务中 单片机完成了对S3键按键次数的累计 那么 单片机是如何进行计数的 在单片机的内部结构中 我们知道在MCS 51的单片机内有两个16位可编程的定时 计数器 它们具有四种工作方式 其控制字和状态均在相应的特殊功能寄存器中 通过对控制寄存器的编程 就可方便地选择适当的工作方式 T1由TH1 TL1构成 字节地址为8DH 8BH T0由TH0 TL0构成 字节地址为8CH 8AH TCON则用于控制定时计数器T0和T1的启动和停止计数 同时管理定时器T0和T1的溢出标志等 特殊功能寄存器TMOD控制定时计数器的工作方式 TMOD89H C T 0 定时 C T 1 对外计数 定时 fosc 12 1 12 fosc 1 T 计数 脉冲不等间隔 波形等间隔 次数已定 时间确定即对机器周期进行计数 左图定时时间为N T 每个下降沿计数一次确认一次负跳变需两个机器周期 所以 计数频率最高为fosc 24 TCON88H TF0 TF1分别是定时 计数器T0 T1的溢出标志位 1 定时 计数器的工作方式 M1M0 工作模式选择位 编程可决定四种工作模式 0013位定时 计数器模式00116位定时 计数器模式108位定时 计数器 自动重装初值 模式211T08位定时 计数模式311T1停止工作模式3 1 工作方式0 T0的等效逻辑结构 在计数工作方式下 计数器的计数值范围是 1 8192 2的13方 当为定时工作方式时 定时时间的计算公式为 8192 计数初值 晶振周期 12或 8192 计数初值 机器周期其时间单位与晶振周期或机器周期相同 如果单片机的晶振选为6 000MHz 则最小定时时间为 8192 8192 1 1 6 10 6 12 2 10 6 s 2 us 最长定时时间为 8192 0 1 6 10 6 12 16384 10 6 s 16384 us 2 工作方式1 T0的等效逻辑结构 在工作方式1下 计数器的计数值范围是 1 65536 2的16方 当为定时工作方式1时 定时时间的计算公式为 65536 计数初值 晶振周期 12或 65536 计数初值 机器周期其时间单位与晶振周期或机器周期相同 如果单片机的晶振选为6 000MHz 则最小定时时间为 65536 65536 1 1 6 10 6 12 2 10 6 s 2 us 最长定时时间为 65536 0 1 6 10 6 12 131072 10 6 s 131072 us 3 工作方式2 T0的等效逻辑结构 方式2与方式0 1的区别 工作方式0和工作方式1的最大特点就是计数溢出后 计数器为全0 因而循环定时或循环计数应用时就存在反复设置初值的问题 这给程序设计带来许多不便 同时也会影响计时精度 工作方式2就具有自动重装载功能 即自动加载计数初值 所以也有的文献称之为自动重加载工作方式 在这种工作方式中 16位计数器分为两部分 即以TL0为计数器 以TH0作为预置寄存器 初始化时把计数初值分别加载至TL0和TH0中 当计数溢出时 不再象方式0和方式1那样需要 人工干预 由软件重新赋值 而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载 方式2在串口通讯时 常用作波特率发生器 4 工作方式3 如果定时 计数器0工作于工作方式3 那么定时 计数器1的工作方式就因为自己的一些控制位已被定时 计数器0借用 只能工作在方式0 方式1或方式2下 等效电路参见下图 2 怎样编制计数程序 从前面的任务中 我们看到了 首先必须对定时计数器进行初始化 然后再开启定时或计数 简单的总结一下 定时计数器的初始化包括以下内容 1 确定工作方式 对TMOD赋值 如 任务中的MOVTMOD 06H指令 设定T0为计数器工作方式 2 预置定时计数器中计数的初值 直接写入TH和TL 如 任务中的MOVTH0 00H两条指令 设定计数初值 MOVTL0 00H 3 根据需要开放定时器 计数器的中断 对IE位赋值 4 启动定时器 计数器 如 任务中的SETBTR0指令初值的计算方法X M 计数值M是定时器的最大计数值 视工作方式不同而不同 工作方式0 13位定时 计数方式 因此 最多可以计到2的13次方 也就是8192次 工作方式1 16位定时 计数方式 因此 最多可以计到2的16次方 也就是65536次 工作方式2和工作方式3 都是8位的定时 计数方式 因此 最多可以计到2的8次方 也说是256次 预置值计算 用最大计数量减去需要的计数次数即可 通过上面的任务 我们掌握了计数程序的编制方法 下面我们再看看定时程序怎样编制 首先我们看一下下面的程序段 MOVTMOD 01HMOVTL0 00HMOVTH0 4CHSETBTR0以上程序是任务一中的定时程序段 它的初始化过程和计数方式类似 小结 1 定时计数器的基本结构及其四种工作方式 2 定时计数程序的编制方法 实验实训项目8定时器控制流水灯课题项目9计数器课题要求 课外完成编程 相关硬件安装 仿真与调试 思考与练习 5 35 5 5 2任务十单片机流水灯控制 学习目标 通过任务十的学习 完成 掌握单片机硬件资源中断系统的使用 任务描述 单片机上电 单灯按1HZ频率循环 一旦按下P3 2所接的按键 发光二极管按双灯循环 松开此键 单灯继续原来的循环 5 2 1硬件电路与工作原理 1 硬件电路 2 工作原理 一旦按下P3 2所接按键后 P3 2口线上会出现这样两个变化 第一 口线上出现由高到低的变化 即出现下降沿 第二 P3 2按住后口线保持低电平直到松键为止 单片机就是利用口线上的这种变化 实现上述各种状态的切换 1 程序流程图 5 2 2控制程序 2 控制程序 ORG0000HLJMPMAINORG0003HLJMPINT 0ORG001BHLJMPDELAYMAIN SETBIT0MOVTMOD 01HMOVTL0 00HMOVTH0 4CHSETBPT0SETBEASETBEX0SETBET0 MOVB 20SETBTR0MOVA 0FEHBEGIN MOVP1 ACJNEB 00 MOVB 20RLASJMPBEGININT 0 PUSHACCMOVA 0FBHLOOP MOVP1 ACJNEB 00 MOVB 20RLA JNBP3 2 LOOPPOPACCRETIDELAY MOVTL0 00HMOVTH0 4CHDJNZB LOOP1LOOP1 RETIEND 5 2 3源程序的编辑 编译 下载 1 打开 伟福 模拟仿真软件进行程序的编辑 编译 1 正确选择单片机类型8751或80312 正确选择编译器 伟福编译器3 选择模拟仿真功能4 打开或新建文件进行编辑5 编译2 打开 ISP下载软件 将目标文件下载到ISP 4实验开发板上的AT89S51单片机芯片 观察程序运行结果 1 编译成功后打开下载软件2 选择好单片机89S51并测试3 打开伟福6000编译生成的 BIN或 HEX文件4 选择自动写完成擦除 写 读 校验过程5 观看运行结果 5 2 4相关知识 1 单片机如何中断原来的工作 在本任务中当按键S1按下后 原来单片机正在进行的工作被打断 按键松开后单片机又恢复了原来的工作 这就是我们在前面所说的中断 或者说 CPU正在执行原程序时 突然 被意外事情打断 转去执行新程序 CPU执行新程序结束后 又回到原程序中继续执行 这样的过程就叫中断 1 MCS 51的中断结构 5个中断源 两个中断优先级控制 2 中断处理流程 CPU响应中断请求后 就立即转入执行中断服务程序 不同的中断源 不同的中断要求可能有不同的中断处理方法 但它们的处理流程一般都如下所述 1 现场保护和现场恢复 2 中断打开和中断关闭 3 中断服务 4 中断返回 3 MCS 51的中断源 8051有5个中断源 它们是两个外中断INT0 P3 2 和INT1 P3 3 两个片内定时 计数器溢出中断TF0和TF1 一个是片内串行口中断TI或RI 这几个中断源由TCON和SCON两个特殊功能寄存器进行控制 TCON88H IE1 外部边沿触发中断1请求标志 其功能和操作类似于TF0 IT1 外部中断1类型控制位 通过软件设置或清除 用于控制外中断的触发信号类型 IT1 1 边沿触发 IT 0是电平触发 IE0 外部边沿触发中断0请求标志 其功能和操作类似于IE1 IT0 外部中断0类型控制位 通过软件设置或清除 用于控制外中断的触发信号类型 其功能和操作类似于IE1 必须注意 在不同外部中断触发方式下 标志清除方法不一样 SCON98H TI MCS 51串行口的发送中断标志 中断响应后 必须软件清除标志 RI MCS 51串行口的接收中断标志 中断响应后 必须软件清除标志 4 中断的控制 MCS 51的对中断的开放和屏蔽是由中断允许寄存器IE A8H 控制来实现的 IE的结构格式如下 EA 中断总控制位 EA 1 CPU开放中断 EA 0 CPU禁止所有中断 ES 串行口中断控制位 ES 1允许串行口中断 ES 0 屏蔽串行口中断 ET1 定时 计数器T1中断控制位 ET1 1 允许T1中断 ET1 0 禁止T1中断 EX1 外中断1中断控制位 EX1 1 允许外中断1中断 EX1 0 禁止外中断1中断 ET0 定时 计数器T0中断控制位 ET1 1 允许T0中断 ET1 0 禁止T0中断 EX0 外中断0中断控制位 EX1 1 允许外中断0中断 EX1 0 禁止外中断0中断 MCS 51的中断系统有两个不可寻址的优先级状态触发器 一个指出CPU是否在执行高优先级中断服务程序 另一个指出CPU是否正在执行低优先级的中断服务程序 这两个中断触发器的1状态分别屏蔽所有中断申请和同一级别的其他中断申请 此外 MCS 51还有一个申请优先级寄存IP IP的格式如下 字节地址是B8H PS 串行口中断口优先级控制位 PS 1 串行口中断声明为高优先级中断 PS 0 串行口定义为低优先级中断 PT1 定时器1优先级控制位 PT1 1 声明定时器1为高优先级中断 PT1 0定义定时器1为低优先级中断 PX1 外中断1优先级控制位 PT1 1 声明外中断1为高优先级中断 PX1 0定义外中断1为低优先级中断 PT0 定时器0优先级控制位 PT1 1 声明定时器0为高优先级中断 PT1 0定义定时器0为低优先级中断 PX0 外中断0优先级控制位 PT1 1 声明外中断0为高优先级中断 PX1 0定义外中断0为低优先级中断 5 中断的响应 MCS 51CPU在每一个机器周期顺序检查每一个中断源 在机器周期的S6按优先级处理所有被激活的中断请求 此时 如果CPU没有正在处理更高或相同优先级的中断 或者现在的机器周期不是所执行指令的最后一个机器周期 或者CPU不是正在执行RETI指令或访问IE和IP的指令 因为按MCS 51中断系统的特性规定 在执行完这些指令之后 还要在继续执行一条指令 才会响应中断 CPU在下一个机器周期响应激活了的最高级中断请求 中断响应的主要内容就是由硬件自动生成一条长调用LCALLaddr16指令 这里的addr16就是程序存储器中相应的中断区入口地址 这些中断源的服务程序入口地址如下 生成LCALL指令后 CPU紧跟着便执行之 首先将PC 程序计数器 的内容压入堆栈保护断点 然后把中断入口地址赋予PC CPU便按新的PC地址 即中断服务程序入口地址 执行程序 2 单片机中断程序怎样编制 从上面的任务程序中 我们来体会以下中断服务程序的编制方法 1 首先必须对中断系统进行初始化 包括 1 开中断 即设定IE寄存器 如上面程序中的SETBEA 开总中断控制位SETBEX0 开外部中断0SETBET0 开定时器中断02 设定中断优先级 即设置IP寄存器 如上面程序中的SETBPT0 设定时器0中断为高优先级3 如果是外部中断 还必须设定中断响应方式 即设定IT0 IT1位 如上面程序中的SETBIT0 设外部中断0为边沿触发方式4 如果是计数 定时中断必须先设定定时 计数的初始值 如上面程序中的MOVTL0 00HMOVTH0 4CH5 初始化结束后 对于定时 计数器而言 还应该记得启动定时或计数 即设定TR0 TR1位 串口接收中断 要记得允许接收位REN应该设置 如上面程序中的SETBTR0 2 中断初始化结束后 就可以编制中断服务程序 编制中断服务程序时注意 1 中断服务程序 第一条指令必须安排在相应的中断入口地址 并且应该是转移指令 由于中断响应时 已经由硬件执行了LCALL指令 中断程序断点地址已经入栈 所以不能再用子程序调用指令 如任务程序中的ORG0003H 外部中断0入口地址LJMPINT 0ORG001BH 定时器T0中断入口地 址LJMPDELAY 2 由于中断的产生是随机的 所以对程序中的公共单元 其他程序中已经使用 中断程序中也使用了的单元 必须在中断服务程序开始处 采用堆栈进行保护 即入栈 子程序返回前再出栈 如任务程序中的PUSHACC POPACC3 中断服务程序必须以RETI结束 因为RETI指令具有两个功能 第一 将断点地址弹回PC指针 以保证能继续原来的程序 第二 能将中断优先级状态触发器清零 以保证新的中断请求能够被相应 小结 1 MCS 51中断系统的结构及与中断有关的寄存器是什么 2 怎样编制中断服务程序 思考与练习 5 45 16 实验实训 项目10中断方式实现流水灯控制项目11外部中断课题项目12按键使用课题要求 课外完成编程 相关硬件安装 仿真与调试 5 3任务十一两台单片机数据互传 学习目标 通过任务十一的学习 完成 掌握单片机硬件资源串行通讯接口的使用 任务描述 两台单片机之间 要求将对方单片机的按键值 S1 1 通过串口传送给另外一方 并在发光二极管显示 5 3 1硬件电路与工作原理 1 硬件电路 2 工作原理 单片机扫描到S1 P3 2 键合上后 即启动串行发送 将01H这个数发送给对方单片机 对方单片机收到数据后 再从P1口送出来显示 5 3 2控制程序 1 程序流程图 2 控制程序 发送程序段ORG0000HLJMPMAINORG0030HMAIN MOVSCON 40H 串口初始化 设置工 作方式1MOVPCON 80H 波特率加倍MOVTMOD 20H 定时器1工作在方式2MOVTH1 0FDH 设置波特率为9600SETBTR1LOOP JBP3 2 判键是否合上 LCALLDELAY 延时10MS去抖JBP3 2 LOOPMOVSBUF 01H 启动串行发送JNBTI 判断是否发送完毕 CLRTISJMP DELAY MOVR3 100DEL MOVR4 50DJNZR4 DJNZR3 DELRETEND 接收程序段ORG0000HLJMPMAINORG0030HMAIN MOVSCON 40H 串口初始化 设置工 作方式1 MOVPCON 80H 波特率加倍MOVTMOD 20H 定时器1工作在方式2MOVTH1 0FDH 设置波特率为9600SETBTR1SETBREN 允许接收LOOP JBRI 判键是否合上 CLRRI 延时10MS去抖MOVP1 SBUFSJMP END 5 3 3源程序的编辑 编译 下载 1 打开 伟福 模拟仿真软件进行程序的编辑 编译 1 正确选择单片机类型8751或80312 正确选择编译器 伟福编译器3 选择模拟仿真功能4 打开或新建文件进行编辑5 编译2 打开 ISP下载软件 将目标文件下载到ISP 4实验开发板上的AT89S51单片机芯片 观察程序运行结果 1 编译成功后打开下载软件2 选择好单片机89S51并测试3 打开伟福6000编译生成的 BIN或 HEX文件4 选择自动写完成擦除 写 读 校验过程5 观看运行结果 5 3 4相关知识 1 单片机如何能收 发数据 MCS 51单片机内部有一个全双工的串行通信口 即串行接收和发送缓冲器 SBUF 这两个在物理上独立的接收发送器 既可以接收数据也可以发送数据 但接收缓冲器只能读出不能写入 而发送缓冲器则只能写入不能读出 它们的地址为99H 这个通信口既可以用于网络通信 亦可实现串行异步通信 还可以构成同步移位寄存器使用 1 基本概念 并行通信和串行通信 并行通信 数据的各位同时送出 串行通信 数据的各位逐位送出 1 数据通信的传输方式 单工方式 数据仅按一个固定方向传送 半双工方式 数据可实现双向传送 但不能同时进行 实际的应用采用某种协议实现收 发开关转换 全双工方式 允许双方同时进行数据双向传送 但一般全双工传输方式的线路和设备较复杂 2 串行数据通信两种形式 异步通信 在这种通信方式中 接收器和发送器有各自的时钟 它们的工作是非同步的 异步通信用一帧来表示一个字符 其内容如下 一个起始位 仅接着是若干个数据位 同步通信 发送器和接收器由同一个时钟源控制 同步传输方式去掉了起始位和停止位 只在传输数据块时先送出一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版商铺租赁合同转让及租期延长补充协议
- 2025滨湖菊园园林园艺产品销售与养护服务全面合同
- 2025房地产项目智能家居系统升级精装修工程合同(项目编号:SG20250003)
- 2025冻猪白条冷链仓储配送与电商平台合作合同
- 2025橱柜家具销售合同范本专业定制家居解决方案
- 2025年集装箱租赁及运输代理合同范本
- 2025年文化旅游项目成本预算及控制建议合同范本
- 2025定向智能交通系统合作协议书范本:智慧城市建设
- 2025版唐代离婚协议书:针对唐代家庭财产继承的离婚协议
- 2025房地产总经理任命书及年度工作计划与考核协议
- 急性st段抬高型心肌梗死
- 幼儿文学课件完整版
- DB6101T3128-2022养老服务规范 助餐服务
- GB/T 21709.8-2008针灸技术操作规范第8部分:皮内针
- 资本论第三卷讲义课件
- 离心式压缩机试车记录
- 穴位敷贴中医护理技术操作规范
- 冷却塔投标文件
- 地下室开槽引流方案
- 青年教师专业成长课题结题报告
- 农村公路安全生命防护工程施工方案
评论
0/150
提交评论