📄 main1.c
字号:
/************************************************************************************
* Copyright (c) 2008,重庆优易特电子
* All rights reserved.
* 摘 要: ENT键,按键计数,并将结果显示到数码管上
* 文件名称: main.c
* CPU芯片: STC89C51RC
* 学习板型: Easy51-B
*
* 当前版本: 2.0
* 作 者: cache
* 完成日期: 2008年1月23日
*
编程思想:
定时器0用于数码管扫描,外部中断0(ENT键)进行按键计数,同时将结果更新的显示缓冲区中
*************************************************************************************/
#include "reg52.h"
#define THCO 0xee
#define TLCO 0x0
unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char Data_Buffer[4]={0,0,0,0};
unsigned int count=0;
//从0值开始计数
sbit P10=P1^0; //数码管位码定义
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
void main()
{
TMOD=0x11;
TH0=THCO; //定时器0用来扫描数码管显示
TL0=TLCO;
TR0=1;
ET0=1;
IT0=1; //外部中断0,边沿触发方式
EX0=1;
EA=1;
while(1);
}
void int0() interrupt 0
{
count++; //有键按下,数值加1
if(count>9999)count=0;
Data_Buffer[0]=count/1000;
Data_Buffer[1]=count%1000/100;
Data_Buffer[2]=count%100/10;
Data_Buffer[3]=count%10;
}
void timer0() interrupt 1
{
static unsigned char Bit=0;
TH0=THCO;
TL0=TLCO;
Bit++; //数码管扫描显示
if(Bit>=4)Bit=0;
P1|=0x0f;
P0=Duan[Data_Buffer[Bit]];
switch(Bit)
{
case 0: P10=0;break;
case 1: P11=0;break;
case 2: P12=0;break;
case 3: P13=0;break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -