必威体育Betway必威体育官网
当前位置:首页 > IT技术

郭天祥单片机编程100例程序及随笔3——定时器编程

时间:2019-07-31 00:13:23来源:IT技术作者:seo实验室小编阅读:73次「手机版」
 

郭天祥

1.五个知识点:

1.1设置中断的流程:

1.1.1主函数设置初始化

1.1.2中断服务程序(由用户自己编写),设置要做的事情,但不可以放太多。

1.2主函数的设置(定时器初始化)

举例:

void main()
{
	TMOD = 0x01;
	TH0 = (65536-46082)/256;
	TL0 = (65536-46082)%256;
	EA = 1;
	ET0 = 1;
	TR0 = 1;
}

或者使用void init_interrupt(){}也可以,不一定要直接放在总程序里面。

设置流程如下:

注:关于TMOD:

1.3中断子函数

需要跟着时间改变而进行改变的对象,都要用定器去辅助实现他们。

可由用户自己设置,格式如下:

void 函数名 interrupt m [using n]

说明:interrupt m的m为中断号。using n 的n的意思大概是当有紧急的事情需要cpu处理时,现有程序可以存入指定的寄存器组,猜测这个n是寄存器组号。

在中断服务程序中,一定要记得重装初值,否则每次计时的时间就会不对。

1.4 uchar与uint的区别

uchar是无符号整型,8Bit,最大到255.也可以写作 u8;

uint是16bit最大到65535.也可以写作 u16;

一般数字较小采用uchar来定义,可以节省空间

1.5 数码管分位显示可以采用延时函数。

例如:

void display(shi,ge)
{
	wela = 1;
	P0 = 0xfe;
	wela = 0;
	P0 = 0xff;
	dula = 1;
	P0 = table[ge];
	dula = 0;
	delay();

	wela = 1;
	P0 = 0xfd;
	wela = 0;
	P0 = 0xff;
	dula = 1;
	P0 = table[shi];
	dula = 0;
	delay();
}

2.中断相关练习程序如下:

利用定时器0工作方式1,在实验板上实现第一个发光管以1s亮灭闪烁。
#include <reg52.h>
#define uchar unsigned char
uchar num;
sbit led1 = P1^0;
void main()
{
	TMOD = 0x01;
	TH0 = (65536-46082)/256;
	TL0 = (65536-46082)%256;
	EA = 1;
	ET0 = 1;
	TR0 = 1;
	while(1);//等待中断服务程序的到来
}
void Timer_0() interrupt 1
{
	TH0 = (65536-46082)/256;
	TL0 = (65536-46082)%256;
	num++;
	if(num == 20)
	{
		num = 0;
		led1 = ~led1;
	}
}

用定时器0的方式1实现第一个发光二极管以200ms间隔闪烁,用定时器1的方式1实现数码管的前两位59s循环计时。
在定时器中做改变发光管状态和数值大小的事情。也就是说,需要跟着时间改变而进行改变的对象,都要用定器去辅助实现他们。

#include <reg52.h>
#define uchar unsigned char
uchar num,i,shi,ge,j,m,n;
sbit led1 = P1^0;
void delay();

uchar code table[] = 
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};

sbit wela = P2^7;
sbit dula = P2^6;
void main()
{
	TMOD = 0x11;
	TH0 = (65536-)/256;
	TL0 = (65536-)%256;
	TH1 = (65536-)/256;
	TL1 = (65536-)%256;
	EA = 1;
	ET0 = 1;
	ET1 = 1;
	TR0 = 1;
	TR1 = 1;
	while(1)
	{
		display(a,b);
	}
}
void display(shi,ge)
{
	wela = 1;
	P0 = 0xfe;
	wela = 0;
	P0 = 0xff;
	dula = 1;
	P0 = table[ge];
	dula = 0;
	delay();

	wela = 1;
	P0 = 0xfd;
	wela = 0;
	P0 = 0xff;
	dula = 1;
	P0 = table[shi];
	dula = 0;
	delay();
}

void Timer_0() interrupt 1
{
	TH0 = (65536-45872)/256;
	TL0 = (65536-45872)%256;
	j++;
	if(j==4)
	{
		j = 0;
		led1 = ~led1;
	}
}

void Timer_1() inetrrupt 4
{
	TH1 = (65536-45872)/256;
	TL1 = (65536-45872)%256;
	i++;
	if(i==20)
	{
		i=0;
		num++;
		if(num==60)
			num=0;
		shi = num/10;
		ge = num%10;
	}
}

void delay()
{
	for(m=5;m>0,m--)
		for(n=110;n>0;n--);
}

相关阅读

小程序的2019:百度小程序怎么样?

说到小程序,我们可能先想到的是微信小程序、支付宝小程序。今天,来聊聊百度小程序~这是上一篇聊聊2018小程序这个迷宫的续篇。如果

阿里蒲公英推广程序可以卸载吗?怎么装的?

常用的推广软件淘宝联盟之外,还有旗下的淘宝客以及淘宝直通车推广,但性价比最高的,不可谓是淘宝客了,但因流量单一,淘客推广有时候效果

白条100元礼包是什么?京东白条怎么激活?

白条100元礼包是什么?京东白条怎么激活?大部分的京东用户都知道京东白条是什么,最近京东商城送出了白条100元礼包哦!白条100元礼包

《100个最具前景的职业》试读:网页设计师

[转载]《100个最具前景的职业》试读:网页设计师     为网页设计师“正名” 现今我国的网站设计业仍处在发展初期,行业的标准、客

万字解析小程序(4):分享的内核是“礼物经济”

私域流量做不了鸡尾酒,因为“底是漏的”,所以私欲流量如何玩儿?提到“流量池”,最容易想到什么?没错,用户分层。公域流量,流量池的结构是

分享到:

栏目导航

推荐阅读

热门阅读