单片机应用系统设计实例
ppt课件
16
3)计算机中的中断概念
▪中断是指由于某种随机事件(甲方)
的发生,计算机(乙方)暂停现行程 序的运行,转去执行另一程序,以处 理发生的事件,处理完毕后又自动返 回原来的程序继续运行。
▪将能引起中断的事件称为中断源。
▪CPU现行运行的程序称为主程序。
▪处理随机事件的程序称为中断服务 子程序。
/*函数原型,左循环*/
uchar _cror_(uchar a,uchar n);
/*函数原型,右循环*/
ppt课件
11
#include <INTRINS.H> uchar _crol_(uchar a,uchar n); uchar _cror_(uchar a,uchar n);
/*函数原型*/ /*函数原型,右循环*/
ppt课件
2
1、用1个LED发光二极管,设计一 个循环闪烁的指示灯。
如何设计硬件和软件?
ppt课件
3
1.1硬件设计
注意:在接下来的仿真中,省略时钟及复位电路。
ppt课件
4
1.2软件设计
1)初始化
51头文件、宏定义
2)主程序,即main()程序
灯的亮灭控制
3)延时功能
延时子程序设计
P1_0=1;
delay(5000);
}
}
void delay(uint t) //延时0.1*t毫秒
{
uint i;
do
{
for(i=0;i<10;i++)
;
} while(t--);
}
2、用8个LED发光二极管,设计一 个循环闪烁的流水灯。
ppt课件
7
2.1硬件设计
ppt课件
8
2.2软件设计
ppt课件
17
4)相关的特殊功能寄存器
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。
IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效
; =1:在INT0/INT1端申请pp中t课件断的信号负跳变有效 18
2)主程序,即main()程序
灯的循环闪亮控制
中断初始化
3)延时功能
4)中断服务程序设计
ppt课件
20
3.2软件设计
中断初始化
触发方式设置 中断允许控制
中断服务程序设计
ppt课件
21
中断初始化 IT0=1; EA=1; EX0=1;
ppt课件
22
中断服务程序
函数名()interrupt n [using m ] { }
IE EA — ET2 ES ET1 EX1 ET0 EX0
EX0/EX1位: 分别是INT0/INT1的中断允许控制位: =0 时禁止中断; =1 时允许中断。
EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。
ppt课件
19
3.2软件设计
1)初始化
51头文件、宏定义
公选课
——《单片机基础及应用》
ppt课件
1
设计实例
1、用1个LED发光二极管,设计一个循环闪烁的指示 灯。
2、用8个LED发光二极管,设计一个循环闪烁的流水 灯。
3、通过设置中断,改变灯的循环方向,控制灯的亮灭。 4、通过定时,精确控制P1.0闪烁500ms。 5、以秒为单位,用LED数码管显示当前计数值。
中断系统的功能是为了解决快速 CPU和慢速外设间的矛盾,它由软 件和硬件组成。
有了中断系统,能使计算机的功能 更强、效率更高、使用更灵活。
51单片机系统有5个中断源。
ppt课件
15
2)日常中断的例子
你正在专心看书, 突然电话铃响,于是 你记下正在看的书的 页数,去接电话,接 完电话后再回来接着 看书。
void main(void) {
uint a = 0xfe; while(1) {
P1=a; delay(5000); a=_crol_(a,1); } }
3、通过设置中断,改变灯的循环方 向,控制灯的亮灭。
ppt课件
13
3.1硬件设计
ppt课件
14
1)中断的概念
中断技术是计算机中一项很重要的 技术。
1)初始化
51头文件、宏定义
2)主程序,即main()程序
灯的循环闪亮控制
3)延时功能
延时子程序设计
ppt课件
9
如何进行灯的循环闪亮控制?
intrins.h 内部函数库 (包含变量循环移位、位操作等函数)
需要将该函数包含进来,同时对函数 原型进行声明。
ppt课件
10
#include <INTRINS.H> uchar _crol_(uchar a,uchar n);
ppt课件
26
1)设置定时器工作方式
TMOD GATE C/T M1 M0 GATE C/T M1 M0
0 00 0 0 001
ppt课件
27
2)计算初始值
晶振12Mhz 1个机器周期:Tp=12121106 1s
定时50ms,需要计数: 50103 50000
1
定时器初始值:
6 5 5 3 6 5 0 0 0 0 1 5 5 3 6 0 x 3 C B 0
ppt课件
5
#include <at89X52.h> #define uint unsigned int #define uchar unsigned char
void delay(uint t); //声明函数
void main(void)
{
while(1)
{
P1_0=0;
delay(5000);
定时500ms,需要中断10次。
P1=0x0;
delay(5000);
P1=0x0ff;
delay(5000);
do
{
P1=a;
delay(5000);
a=_cror_(a,1);
}while(i--);
}
4、通过定时,精确控制闪烁 500ms。
针对任务一进行操作。
ppt课件
25
使用定时器T0 1)设置定时器工作方式 2)计算初始值 3)编写初始化程序 4)编写中断服务程序
Void int0(v定义,使用第二组工
作寄存器组*/
ppt课件
23
void int0(void) interrupt 0
{
uchar a=0xfe,i=16;
P1=0x0;
delay(5000);
P1=0x0ff;
delay(5000);