?? main1.c
字號:
/************************************************************************************
* Copyright (c) 2008,重慶優易特電子
* All rights reserved.
* 摘 要: 秒表:從上電開始顯示工作秒數
* 文件名稱: main.c
* CPU芯片: STC89C51RC
* 學習板型: Easy51-B
*
* 當前版本: 2.0
* 作 者: cache
* 完成日期: 2008年1月23日
*
*************************************************************************************/
#include "reg52.h"
#define THCO 0xee
#define TLCO 0x0
unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//共陰極數碼管,0-9段碼表
unsigned char Data_Buffer[4]={0,0,0,0};
//四個數碼管顯示數值,數組變量定義
unsigned int Sec=0;
bit flag=0;//1S時間到標志
sbit P10=P1^0; //四個數碼管的位碼口定義
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
void main()
{
TMOD=0x11; //定時器0初始化
TH0=THCO;
TL0=TLCO;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(flag==1)
{
flag=0;
Data_Buffer[0]=Sec/1000;
Data_Buffer[1]=Sec%1000/100;
Data_Buffer[2]=Sec%100/10;
Data_Buffer[3]=Sec%10;
}
}
}
void timer0() interrupt 1
{
static unsigned char Bit=0; //靜態變量,退出程序后,值保留
static unsigned char count=0;
TH0=THCO;
TL0=TLCO;
count++;
if(count>=200) //秒計時,定時器定時5ms,計200次為一秒
{
count=0;
Sec++;
flag=1; //更新數碼管顯示
if(Sec>9999)Sec=0; //秒數最大顯示為9999,之后從頭開始計時
}
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 + -