项目8手控信号灯控制

上传人:宝路 文档编号:48321552 上传时间:2018-07-13 格式:PPT 页数:99 大小:942.43KB
返回 下载 相关 举报
项目8手控信号灯控制_第1页
第1页 / 共99页
项目8手控信号灯控制_第2页
第2页 / 共99页
项目8手控信号灯控制_第3页
第3页 / 共99页
项目8手控信号灯控制_第4页
第4页 / 共99页
项目8手控信号灯控制_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《项目8手控信号灯控制》由会员分享,可在线阅读,更多相关《项目8手控信号灯控制(99页珍藏版)》请在金锄头文库上搜索。

1、项目8 手控信号灯控制 项目8 手控信号灯控制主要内容 中断的基本概念和功能。 中断系统的结构和控制方式。 中断系统的中断处理过程。 用C51编写控制程序的基本方法。 用Proteus实现单片机控制信号灯的仿 真。 用Keil软件进行单片机控制程序的调 试。项目8 手控信号灯控制 项目8 手控信号灯控制学习目标 了解中断的基本概念和功能。 理解中断系统的中断处理过程。 掌握中断系统的结构和控制方式。 掌握中断系统的初始化步骤。 掌握用C51编写控制程序的基本方法 。 掌握用中断系统实现手控信号灯控制 的方法。项目8 手控信号灯控制 项目8 手控信号灯控制主要操作实例 用外部中断方式控制信号灯项

2、目8 手控信号灯控制 项目8 手控信号灯控制教学重点和难点 中断系统结构与控制方式 中断系统的初始化步骤 用C51编写控制程序教学方法 讲授法、演示法 教学学时 6课时项目8 手控信号灯控制 项目8 手控信号灯控制8.0 复习8.1 项目引入8.2 MCS-51中断系统8.3 单片机的C语言程序设计项目8 手控信号灯控制 8.0 复习汇编语言程序具有顺序结构、循环结构 、分支结构和子程序结构四种结构形式。 实际的应用程序一般都由一个主程序和 多个子程序构成,即采用模块化的程序设 计方法。项目8 手控信号灯控制 8.0 复习习 题1. 程序设计语言有哪几类?各有什么特点? 2. 汇编语言有哪两类

3、语句?各有什么特点? 3. 汇编语言源程序有哪两类汇编?各采用什么方法来实现? 4. 汇编语言程序设计一般分哪几个步骤? 5. 有两个4位十六进制数分别存放在片内RAM 20H、21H单元和30H、31H单元内, 请编程求它们的和,并将和存放到片内RAM 40H、41H单元。 6. 有一个16位二进制负数的原码存放在片内RAM 60H、61H单元内,请编程求它的 补码,并将它存放到片内RAM 70H、71H单元。 7. 片内RAM中存放有20个数据,首地址为40H,请编程将数据块传送到片外RAM以 50H为首地址的存储单元中。 8. 片外RAM中存放有20个数据,首地址为40H,请编程将数据块

4、传送到片外RAM以 5000H为首地址的存储单元中,同时将片外RAM以40H为首地址的20个存储单元 中的内容全部清零。 9. 片内RAM区30H34H单元中存放有5个十六进制数,请编程计算这5个数的算术平 均值,结果存放到片内RAM区35H单元中。 10. 请分别编写延时1 min、1 h的子程序,晶振频率12MHz。 项目8 手控信号灯控制 11. 自变量X为一无符号数,存放在片内RAM区30H单元,函数Y存放在31H单元。请 编写满足如下关系的程序:X95时,Y=1;95X105时,Y=2;X105时, Y=3。 12. 在片内RAM区从30H单元开始存放了50个数据,请编程找出某一关键

5、值并将该值 在片内RAM区存储单元的地址存放到片内RAM区70H单元中。 13. 编写双字节无符号数加法子程序。 14. 编写双字节无符号数减法子程序。 8.0 复习习 题项目8 手控信号灯控制 实训 手控信号灯的控制1实训目的(1) 利用单片机的中断控制系统,实现对信号灯的复杂控制。(2) 通过程序调试,学会外部中断的使用。(3) 通过中断程序调试,熟练掌握中断的基本概念及相应控制方式。2实训设备与环境(1) 实训设备:微机。(2) 实训环境:proteus、keil。8.1 项目引入项目8 手控信号灯控制 3. 实训要求1) 要求: P1口做输出口控制八只信号灯依次循环点亮,时间间隔为1s

6、。利用按钮产生外部中断信号,改变八只信号灯的控制规律。晶振频率6MHz。 2)(1) 从外部中断0请求输入端(P3.2)输入中断请求信号从右向左循环点亮两只信号灯。 (2) 从外部中断1请求输入端(P3.3)输入中断请求信号从左向 右循环点亮两只信号灯。 2) 方法:用外部中断控制方式编制主控程序,实现对信号灯 的控制。系统采用6MHz晶振,采用软件延时方式,延时1s。8.1 项目引入项目8 手控信号灯控制 4.实验参考电路 P1口做输出口接发光二极管的阴极,P1口的管脚 输出低电平时对应的发光二极管点亮。 两只按钮分别接P3.2和P3.3。按钮输出下降沿有 效。 实验电路图如图8-1所示。

7、项目8 手控信号灯控制 图8-1 手控信号灯控制实验电路 项目8 手控信号灯控制 源程序注释源程序注释ORG 0000H ORG 0100HAJMP MAIN;指向主程序INT00: PUSH ACC;保护现场ORG 0003H;外部中断0的入口地址MOV A,#0FCH;显示初始值AJMP INT00;指向中断服务程序MOV R1,#7;移位次数ORG 0013H;外部中断1的入口地址LP2: MOV P1,AAJMP INT11;指向中断服务程序LCALL DELAYORG 0050H RL A;左移MAIN: SETB EA;允许中断DJNZ R1,LP2;未到7次,转移SETB EX0

8、POP ACC;恢复现场SETB EX1RETISETB PX1;外部中断1为高优先级SETB IT0;中断触发方式为边 沿触发SETB IT1;中断触发方式为边 沿触发MOV A,#0FEH;显示初始值LP1: MOV P1,A LCALL DELAYRL A;左移SJMP LP1 5.参考源程序 项目8 手控信号灯控制 源程序注释源程序注释ORG 0150H ORG 0200HINT11: PUSH ACC;保护现场DELAY: MOV R3,#10;延时1sMOV A,#3FH;显示初始值L1: MOV R7,#200MOV R2,#7;移位次数L2: MOV R6,#123LP3: M

9、OV P1,A NOPLCALL DELAY L3: DJNZ R6,L3RR A;右移DJNZ R7,L2DJNZ R2,LP3;未到7次,转移DJNZ R3,L1POP ACC;恢复现场RETRETIEND项目8 手控信号灯控制 #include #include void delay(void);void main() EA=1; EX0=1; EX1=1; PX1=1; IT0=1; IT1=1; P1=0xFE; do delay();P1= _crol_(P1,1); while(1); C参考代码 :项目8 手控信号灯控制 void service_int0( ) interru

10、pt 0 using 1 unsigned char x,z1;z1=P1;P1=0xFC; for(x=0;x = 循环条件表 达式;更新表达式 )语句goto 语句标号;项目8 手控信号灯控制 8.4.3 C51程序设计的基本语 句返回语句 return(表达式); return;一个函数内可以有多个return语句, 也可以没有return语句。项目8 手控信号灯控制 8.4.4 应用实例Vision2的函数 reg51.h intrins.h _crol_(unsigned char c , unsigned char b ) 左循环 _cror_(unsigned char c ,

11、unsigned char b ) 右循环 预处理命令 #pragma asm #pragma endasm项目8 手控信号灯控制 8.4.4 应用实例中断服务函数 函数类型 函数名(形式参数)interrupt n using n 中断号n取值:0、1、2、3、4 寄存器组号n取值:0、1、2、3 进入中断函数时,以下SFR保存入栈 ACC、B、DPH、DPL、PSW 若不使用using ,中断函数中用到的全部工 作寄存器都保存入栈项目8 手控信号灯控制 8.4.4 应用实例P1口做输出口控制八只信号灯依次循环点亮,利用按钮产生外部中断 信号,改变八只信号灯的控制规律。晶振频率6MHz。 控

12、制要求如下: (1) 从外部中断0请求输入端(P3.2)输入中断请求信号从右向左循环点亮 两只信号灯。 (2) 从外部中断1请求输入端(P3.3)输入中断请求信号从左向右循环点亮 两只信号灯 解: 开关1的低电平脉冲信号作为外部中断信号由INT0(P3.2)管脚输入 ,开关2的低电平信号作为外部中断信号由INT1(P3.3)管脚输入。中断允许寄存器IE中相应的EA、EX1、EX0位设置为1。外部中断0为低优先级, IP中的PX0位设置为0;外部中断1为高优先级, IP中的PX1位设置为1。外部中断0的中断触发方式设为边沿触发,控制位IT0应设置为1;外部中断1的中断触发方式设为边沿触发,控制位

13、IT1应设置为1。 项目8 手控信号灯控制 项目8 手控信号灯控制 8.4.4 应用实例 #include #include void delay(void);void main() EA=1; EX0=1; EX1=1; PX1=1; IT0=1; IT1=1; P1=0xFE; do delay();P1= _crol_(P1,1); while(1); 项目8 手控信号灯控制 8.4.4 应用实例void service_int0() interrupt 0 using 1 unsigned char x,z1;z1=P1;P1=0xFC; for(x=0;x7;x+) delay();

14、P1= _crol_(P1,1);P1=z1; 项目8 手控信号灯控制 8.4.4 应用实例void service_int1() interrupt 2 using 1 unsigned char y,z2;z2=P1;P1=0x3F; for(y=0;y7;y+) delay();P1= _cror_(P1,1);P1=z2; 项目8 手控信号灯控制 8.4.4 应用实例void delay() #pragma asmMOV R3,#10L1: MOV R5,#200L2: MOV R6,#123NOPL3: DJNZ R6,L3DJNZ R5,L2DJNZ R3,L1#pragma endasm 项目8 手控信号灯控制 项目小结1、MCS-51单片机中断系统有几个中断源?分别是什么? 事先约定的优先顺序是怎样的? 2、如何进行中断允许控制?如何进行中断优先级控制? 3、中断优先的规则是什么?项目8 手控信号灯控制 理论作业P131 2、3、6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号