对于需要实时处理的代码语句 就用定时器中断模式,实现多线程模式,建议不要用查询模式。

对于需要实时处理的代码语句 就用定时器中断模式,实现多线程模式,建议不要用查询模式。

 

示例代码1:

查看代码
#include"delay.h"
#include"sysInt.h"
#include"intrins.h"
char SMGDuan[]={0x5B,0x3F,0x5B,0x66,	0x40,0x40,	0x3F,0x3F};							//2024--MM
char segDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};	//0-9
char month;	

//SMG
void segDisp()
{
	char i=0;
	for(i=0;i<8;i++)
	{
		P0=~SMGDuan[i];
		HC573(7);
		P0=_crol_(0X01,i);	
		HC573(6);
		
		delayMs(2);
		P0=0X00;	
		HC573(6);
	}
}
//
void delayMs(uint xms)
{
	xms/=50;
	while(xms--)
	{
		TL0 = 0xB0;				//设置定时初始值 50ms
		TH0 = 0x3C;				//设置定时初始值
		TR0=1;
		while(!TF0);
		TF0=0;
	}
}
// ------------------------分 隔 符------------------------
//main
void main()
{
	sysInt();
	TMOD &= 0xF0;			//设置定时器模式
	
	while(1)
	{
		delayMs(1000);
				
		if(++month == 13)month=1;
		SMGDuan[6]=segDuan[month/10];
		SMGDuan[7]=segDuan[month%10];
		
		segDisp();
	}
}

定时器查询方式1s,但是“2024--MM”是要一直显示着,通过这种方式,并不能一直执行到segDisp();部分,所以就没有效果。

 

对于数码管需要实时显示,还是建议用定时器中断方式(多线程),达到实时处理。查询方式的定时本质上还是执行空语句。

posted @ 2024-03-02 23:27  iZJ"Qq4577105  阅读(7)  评论(0编辑  收藏  举报