资源简介
INT0中断计数,并在数码管显示所计数,按下按键后对所计的数进行清零操作
代码片段和文件信息
/*****外部中断0 定时器0 实现1秒led自动加1;按下按键后清零*****/
#include
#include
sbit AA=P2^2;
sbit BB=P2^3;
sbit CC=P2^4;
sbit clear_key=P3^6;
#define uchar unsigned char
#define uint unsigned int
unsigned int ledout[8]time_count=0time=0led_count=0;
unsigned char code CODE[]=
{
~0xC0~0xF9~0xA4~0xB0~0x99~0x92~0x82~0xF8~0x80~0x90
//0x3f0x060x5b0x4f0x660x6d0x7d0x7f0x6f0x00
};
void Delay(unsigned int ms) //延迟20Ms
{
char ij;
for(i=ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void Display()
{
unsigned int i;
ledout[0]=CODE[led_count%10000/1000];
ledout[1]=CODE[led_count%1000/100];
ledout[2]=CODE[led_count%100/10];
ledout[3]=CODE[led_count%10];
for(i=0;i<8;i++)
{
P0=ledout[i];
switch(i)
{
case 0:AA=0;BB=0;CC=0;break;
case 1:AA=1;BB=0;CC=0;break;
case 2:AA=0;BB=1;CC=0;break;
case 3:AA=1;BB=1;CC=0;break;
case 4:AA=0;BB=0;CC=1;break;
case 5:AA=1;BB=0;CC=1;break;
case 6:AA=0;BB=1;CC=1;break;
case 7:AA=1;BB=1;CC=1;break;
}
Delay(5);
}
}
/************************************************
****函数名:Creat_Tmr0_Second
****函数描述:创建 T0 定时器秒函数
****参数: 对应 多少秒
****返回值: 成功到时 返回1 否则返回0
*************************************************/
unsigned char Creat_Tmr0_Second(unsigned int second){
if(time_count>=second){
time_count=0;
return 1;
}
return 0;
}
void main()
{
IT0=1; //边沿触发方式
// IT0=0; //电平触发方式
SCON=0X50;
TMOD = 0x20;
TH0=(65536-10000)/256; //50MS 触发一次中断
TL0=(65535-10000)%256;
TR0=1;
EX0 = 1; //开启外部中断0
ET0 = 1; //开启定时器0
EA = 1; //总中断开关
Delay(1);
while(1)
{
if(Creat_Tmr0_Second(1)==1
- 上一篇:labview二进制字符串转十进制
- 下一篇:数码管显示DHT11
评论
共有 条评论