《例子讲解》PPT课件.ppt_第1页
《例子讲解》PPT课件.ppt_第2页
《例子讲解》PPT课件.ppt_第3页
《例子讲解》PPT课件.ppt_第4页
《例子讲解》PPT课件.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例子讲解 如右图所示 将P1口的P1 4 P1 7作为输入位 P1 0 P1 3作为输出位 要求利用8031将开关所设的数据读入单片机 并依次通过P1 0 P1 3输出 驱动发光二极管 以检查P1 4 P1 7输入的电平情况 高电平LED亮 现要求采用中断触发方式 每中断一次完成一次操作 程序如下 ORG0000HAJMPMAINORG0003HAJMPINTERORG0030HMAIN SETBEX0SETBIT0SETBEAHERE SJMPHERE 中断服务子程序 输入 显示 ORG0200HINTER MOVP1 0F0HMOVA P1SWAPAMOVP1 ARETIEND 如右图所示的中断电路可实现系统的故障显示 当系统的各部分正常工作时 4个故障源的输入均为低电平 显示灯全不亮 当有某个部分出现故障时 则相应的输入线由低电平变为高电平 相应的发光二极管点亮 程序如下 ORG0000HAJMPMAINORG0003HAJMPINTERORG0030HMAIN SETBEX0SETBIT0SETBEAHERE SJMPHERE 中断服务子程序 ORG0100HINTER JNBP1 0 L1SETBP1 1L1 JNBP1 2 L2SETBP1 3L2 JNBP1 4 L3SETBP1 5L3 JNBP1 6 L4SETBP1 7L4 RETIEND 某工业监控系统具有温度 压力 pH值等多路监控功能 在pH值 7时将向CPU申请中断 CPU响应后令P3 0引脚输出高电平 经驱动使加碱管道电磁阀接通1秒 以调整pH值 一 电路及分析 中断请求输入相当于 四输入的与或门 外电路上升沿有效 P1 0 P1 3用于查询中断源 P1 4 P1 7用于清除中断请求 主程序及中断程序入口部分 ORG0000HLJMPMAINLJMPINTX0ORG0030HMAIN MOVSP 5FHSETBEX0SETBIT0 下降沿触发SETBEASJMP 查询部分 INTX0 CLREAPUSHPSWPUSHASETBEAJBP1 0 DV1JBP1 1 DV2JBP1 2 DV3JBP1 3 DV4EXIT CLREAPOPAPOPPSWSETBEARETI 各装置的中断服务程序部分 DV1 装置1的中断服务程序 LJMPEXITDV2 装置2的中断服务程序 LJMPEXITDV4 装置4的中断服务程序 LJMPEXIT 装置3的中断服务程序 DV3 SETBP3 0LCALLDELAYCLRP3 0CLRP1 6SETBP1 6LJMPEXIT延时时间计算 8 2 2 4 249 2 100 2 10 8 1000056 S 1S 延时1秒的子程序 设晶振为12MHz DELAY PUSH30HPUSH31HPUSH32HMOV32H 10DY1 MOV31H 100DY2 MOV30H 249LY3 NOPNOPDJNZ30H DY3DJNZ31H LY2DJNZ32H LY1POP32HPOP31HPOP30HRET 应用举例设定时器T0选择工作模式0 定时时间为1ms osc 6MHz 试确定T0初值 计算最大定时时间T 解 1 求T0的初值X由公式 t 213 T0初值 机器周期Tcyt 1ms 1000 s机器周期Tcy 12 osc 12 6000000s 2 s得1000 213 X 2所以初值X 8192 500 7692 1111000001100BT0的低5位 01100B 0CHT0的高8位 11110000B F0H 2 最大定时时间T当T0的初值 0时为最大定时时间T 213 0 2 8192 2 s 16384 s 16 384ms 7692 32商为高8位 余数为低5 设T1以模式0定时 定时时间为1ms osc 6MHz 编程实现其定时功能 解 1 计算初值 同上 略 F0H TH0 0CH TL0 2 程序清单ORG0000HRESET AJMPMAINORG000BHAJMPIT0P 主程序ORG0100HMAIN MOVSP 5FH MOVTL0 0CHMOVTH0 0F0HSETBTR0SETBET0SETBEASJMP 中断服务程序ORG0120HIT0P MOVTL0 0CHMOVTH0 0F0HCPLP1 0RETI 利用T0的工作模式0产生1ms的定时 编程实现在P1 0引脚上输出周期为2ms的方波 设单片机的晶振频率 osc 12MHz 解 方法 定时1ms 对P1 0取反 然后继续定时 1 设置模式字TMOD 0000B 00000000B 00H 2 计算初值由公式 t 213 T0初值 机器周期t 1ms 1000 s 机器周期Tcy 12 osc 12 12000000s 1 s得1000 213 X 1 8192 X 1所以初值X 7192 1110000011000BT0的低5位 11000B 18HT0的高8位 11100000B E0H 7192 32商为高8位 余数为低5位 3 程序清单方法一 中断方式ORG0000HRESET LJMPMAINORG000BHLJMPCTC0 主程序ORG0030HMAIN MOVSP 5FHMOVTMOD 0MOVTL0 18HMOVTH0 0E0HSETBEASETBET0SETBTR0SJMP 中断服务程序ORG0100HCTC0 MOVTL0 18HMOVTH0 0E0HCPLP1 0RETI 方法二 查询方式ORG0000HSTART MOVSP 5FHMOVTMOD 0MOVTL0 18HMOVTH0 0E0HSETBTR0LOOP JBCTF0 NEXTSJMPLOOPNEXT MOVTL0 18HMOVTH0 0E0HCPLP1 0SJMPLOOP 可替换为 LOOP JNBTF0 CLRTF0MOVTL0 18H 用定时器T1产生一个50Hz的方波 由P1 1输出 使用程序查询方式 设 osc 12MHz 解 1 计算初值方波周期T为 T 1 50s 0 02s 20ms定时时间为 t T 2 10ms 10000 s由公式 t 216 X 机器周期Tcy因Tcy 1 s 得10000 216 X 1 10000 65536 XX 55536 D8F0H 55536 256商为高8位 余数为低8位 2 模式字TMODTMOD 0001 B 10H 3 源程序ORG0000HMOVTMOD 10HSETBTR1LP MOVTH1 0D8HMOVTL1 0F0HJNBTF1 CLRTF1CPLP1 1SJMPLP 当P3 4引脚上输入的电平发生负跳变时 从P1 0输出一个500 s的同步脉冲 请编程实现该功能 设 osc 6MHz 解题思路 先令T0以模式2计数 其初值设为FFH 当P3 4引脚上输入的电平发生负跳变时 计数器加1使溢出标志置1 然后令T0以模式2定时 使P1 0输出一个500 s的同步负脉冲 解 1 T0以模式2计数 1 计数初值X 0FFH 2 模式字TMOD 0110B 06H2 T0以模式2定时 1 定时初值X计算t 500 s Tcy 2 s由公式 t 28 X 机器周期Tcy得500 256 X 2X 6 2 模式字TMOD 0010B 02H 3 程序清单 ORG0000HSTART MOVTMOD 6 T0以模式2计数MOVTH0 0FFHMOVTL0 0FFHSETBTR0JNBTF0 CLRTF0CLRTR0MOVTMOD 2 T0以模式2定时 MOVTH0 06MOVTL0 06CLRP1 0SETBTR0JNBTF0 SETBP1 0CLRTF0CLRTR0SJMPSTART 利用定时器T1的模式2对外部信号计数 要求每计满100次对P1 0端取反 解 1 计算计数初值X100 28 XX 256 100 156 9CH 2 模式字TMOD 0110 B 60H 3 程序清单 用中断方式ORG0000HMAIN MOVTMOD 60HMOVTL1 156MOVTH1 156MOVIE 88HSETBTR1SJMP 中断服务程序ORG001BHCPLP1 0RETI 设某单片机系统中已经使用了两个外部中断源 并置定时器T1为模式2 作串行口波特率发生器用 现要求再增加一个外部中断源 并由P1 0引脚输出一个5kHz的方波 osc 12MHz 解 1 确定定时器的工作方式将T0设置为模式3计数 T0的引脚接外部中断源 TL0的计数初值设为FFH 下降沿产生中断 T0的TH0为8位定时器 可产生方波 用中断方式 T1设为模式2定时 作串行口的波特率发生器 2 计算各个初值 1 TL0的初值为0FFH 2 TH0的初值产生5kHz的方波的周期为 T 1 5000s 0 2ms 200 s 因此TH0的定时时间为 t T 2 100 s Tcy 1 s得100 256 X TcyX 256 100 156TH1 TL1 由波特率值确定3 TMOD值 00100111B 27HTCON值 01010101B 55H4 程序清单 1 中断入口部分 ORG0000HSTART LJMPMAINLJMPE0INTORG000BHLJMPTL0INT ORG0013HLJMPE1INTORG001BHLJMPTH0INT 2 主程序部分 MAIN MOVSP 5FHMOVTMOD 27HMOVTL0 0FFHMOVTH0 156MOVTH1 dataMOVTL1 dataMOVIE 9FH 开中断 3 中断处理程序部分 TL0溢出中断服务程序 TL0INT MOVTL0 0FFH 外部中断处理 RETITH0溢出中断服务程序 TH0INT MOVTH0 156CPLP1 0ERTI 其它外部中断服务程序略 设某单片机系统的晶振频率为6MHz 试编写利用T0产生1s定时的程序 解 1 确定定时器T0的工作模式Tcy 2 s模式0最长可定时 2 s 8192 16 384ms模式1最长可定时 2 s 65536 131 072ms模式2最长可定时 2 s 256 512 s选模式1 每隔100ms中断一次 中断10次为1s 2 计算初值X100000 s 65536 X 2 sX 65536 50000 15536 3CB0H3 实现的方法 1 计数器法 2 中断循环程序法 15536 256商为高8位 余数为低8位 4 程序清单 1 中断入口和主程序部分 ORG0000HSTART LJMPMAINORH000BHLJMPSERVEORG0030HMAIN MOVSP 5FHMOVB 10MOVTMOD 01HMOVTL0 0B0HMOVTH0 3CHSETBTR0 开运行SETBET0 开中断SETBEASJMP 2 中断服务程序部分 SERVE MOVTL0 0B0HMOVTH0 3CHDJNZB LOOPCLRTR0LOOP RETIEND 8031与8155的连接方法 设置8155 使用I O口和定时器 使A口为基本输入方式 B口为基本输出方式 定时器作方波发生器 对输入的脉冲进行24分频 试编程实现之 思路 先对定时器赋初值和设定输出波形 向定时器 计数器寄存器中写 再设定A B口的工作方式和传输方向 并启动定时器工作 向命令寄存器中写 程序段如下 1 对定时器赋初值和设定输出波形 定时器 计数器寄存器地址 7F04H 7F05HMOVDPTR 7F04HMOVA 24MOVX DPTR AINCDPTRMOVA 01000000BMOVX DPTR A 2 设定A B口的工作方式并启动定时器工作 命令寄存器地址 7F00HMOVDPTR 7F00HMOVA 11000010BMOVX DPTR A 8051单片机的时钟振荡频率为11 0592MHz 选用定时器T1工作于模式2作为波特率发生器 波特率为2400b s 求T1的初值X 并编写初始化程序段 解 设波特率加倍位SMOD 0X 256 11 0592 106 0 1 384 2400 244 F4H 初始化程序段 MOVTMOD 20HMOVTH1 0F4HMOVTL1 0F4HSETBTR1 用8051串行口外接CD4049或74LS164串入 并出移位寄存器 扩展8位并行口 8位并行口的每位都接一个发光二极管 要求发光二极管从左到右他延迟的轮流显示 并且不断循环 设发光二极管为共阴极接法 如下图所示 STB为高电平时允许并行输出 解 采用中断方式发送 逐位输出高电平使二极管轮流发光 显示延时通过调用延时子程序实现 程序如下 用8051的串行口以方式1发送ASCII数据块 要求波特率为1200b s 进行校验 试编写采用查询方式发送的程序 设数据在片内RAM的20H 3FH单元 osc 11 0592MHz 解 1 最高位作校验位 采用奇校验 P 最高位 2 用定时器 计数器1以模式2定时 作为波特率发生器 计算初值 由初值X 2N osc SMOD 1 384 波特率值 这里N 8 osc 11 0592MHz波特率为1200b s 取SMOD 0 PCON 00H得初值X 232D 0E8H 3 TMOD 00100000B 20H 4 SCON 01000000B 40H 5 程序清单 主程序 用8051的串行口以方式1接收带奇偶校验位的数据块 与上题配合 试编写采用查询方式的程序 接收的数据放在片内RAM的20H 3FH单元 osc 11 0592MHz 解 1 最高位为校验位 采用奇校验 应去掉 2 用定时器 计数器1以模式2定时 作为波特率发生器 计算初值 由初值X 2N osc SMOD 1 384 波特率值 这里N 8 osc 11 0592MHz波特率为1200b s 取SMOD 0 PCON 00H得初值X 232D 0E8H 3 TMOD 00100000B 20H 4 SCON 01010000B 50H 5 程序清单 主程序 8031串行口按双工方式收发ASCII字符 最高位用来作奇偶校验位 采用奇校验 要求传送的波特率为1200b s 用中断方式收发 试编写程序 设发送的数据的首地址为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论