- 博客(0)
- 资源 (1)
空空如也
keil下的c编写的多功能计时器
#include
#include //自定义头文件,KeyScan用于键盘扫描。
#include //用于I2C总线。
#define uchar unsigned char
#define uint unsigned int
unsigned char b[7]={50,58,9,1,15,6,15},clock1[2]={0,12},clock2[2]={0,0}; //b[7]的元素含义:秒,分,时,星期,日,月,年 clock的元素含义:分,时。
code unsigned char tab[11]={0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x00}; //数码管0-9的编码列表,0x00点亮全部管。
code unsigned char tab2[2]={0x6d,0xff}; //ox6d: 表示三横图标。
unsigned char time[7]; //时间设置函数的参数。
void delay(unsigned int cnt); //延时函数声明。
unsigned char getkey1();
//unsigned char getkey2(); //读键盘函数声明。
void tim(void); //中断函数声明。
void KeyDelay(unsigned int KeyJsTime); //键盘扫描延时函数声明。
void display(uchar bit7,uchar bit6,uchar bit5,uchar bit4,
uchar bit3,uchar bit2,uchar bit1,uchar bit0); //数码管显示函数。
void ReadTime(unsigned char TIME[7]); //DS1307读时间函数。
void SetTime(unsigned char TIME[7]); //设置时间初值函数。
void SwitchRTC(unsigned char SWITCH); //时间修改的使能函数:SWITCH=1禁止修改时间,SWITCH=0可以修改时间。
uchar dis_num_h; //显示记录数据的组别十位
uchar dis_num_l; //显示记录数据的组别个位
uchar dis_min_h; //要显示的分的十位;
uchar dis_min_l; //要显示的分的个位;
uchar dis_sec_h; //要显示的秒的十位;
uchar dis_sec_l; //要显示的秒的个位;
uchar dis_dsec; //要显示的0.1秒;
uchar min=0x00; //防止意外,赋初值。分·······
uchar sec=0x00; //秒
uchar dsec=0x00; //十分之一秒。
uchar en,i,clocken1=0,clocken2=0;
main()
{
unsigned char quzhi,xianshi,symbol=0x55,set,set1=0x55,ce;
unsigned char c[30];
unsigned char num,num1,j,k,stop=1; //注意stop必须先赋初值1。
PLLCON&=0xf8; //设置频率为12.582912MHz
TMOD=0x01; //选定定时器及其工作模式。
TH0=0xce; //赋初值:52736,则总共的计数次数为:65536-52736=12800,即12.8毫秒。
TL0=0x00;
IE=0x82; //中断控制,10000010,EA=1开总中断,ET0=1:定时器0中断允许。0x82:1000 0010
I2CCON=0xE8; //开启I2C总线通信,具体含义参阅ADuC848英文版说明资料。
SetTime(b); //设定初始时间。
SwitchRTC(1); //调用时间保持函数。
while(1) //设置死循环,实现循环执行。
{
ReadTime(time); //调用读时间函数,读取当前的时间,并保留在time数组中。
if(((clock1[0]==time[1])&&(clock1
2015-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人