实时时钟设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

源代码:

#pragma sfr //使用特殊功能寄存器

#pragma EI //开中断

#pragma DI //关中断

#pragma access //使用绝对地址指令

#pragma interrupt INTTM000 Time //定义时间中断函数为Time

#pragma interrupt INTKR OnKeyPress //定义按键中断为OnKeyPress

#pragma interrupt INTP5 OnKeyOver //定义INT中断为OnKeyOver

void Init_Led();

void InitKey_INTKR();

void Init_Lcd();

void Init_Inter();

void LightOneLed(unsigned char ucNum);

void LightOff();

int Count_Day(int month);

char i=0; //定义变量i,是切换时间的标志

int key=0; //定义key=0

int temp=1; //用于存放当前月的天数

int temp1=1;

int second=0; //默认的秒second=0

int minute=0; //默认的分minute=0

int hour=12; //默认的时hour=12

int day=1; //默认的天day=1

int month=5; //默认的月month=5

int year=2014; //默认的年year=2014

int c_hour=1; //默认的闹钟时=1

int c_minute=1; //默认的闹钟分=1

int buffs[2]; //秒的数码显示缓存区

int buffm[2]; //分的数码显示缓存区

int buffh[2]; //时的数码显示缓存区

int buffday[2]; //天的数码显示缓存区

int buffmonth[2]; //月的数码显示缓存区

int buffyear[4]; //年的数码显示缓存区

int buffmd[4]; //月,天的数码显示缓存区

int buffhm[4]; //时,分的数码显示缓存区

int buffms[4]; //分,秒的数码显示缓存区

int buffch[2]; //闹钟时的数码显示缓存区

int buffcm[2]; //闹钟分的数码显示缓存区

unsigned char Que = 0; //INT中断中间变量

int

LCD_num[10]={0X070d,0x0600,0x030e,0x070a,0x0603,0x050b,0x050f,0x0700,0x070f,0x070b};//

数字0~~9的显示码

unsigned char Scond;

//…………………………延时函数1……………………//

void Delay(int k){

i nt i,j;

f or(i=0;i

for(j=0;j

}

}

}

//………………………初始化Led函数……………………// void Init_Led(){

P M13=0XF0; //端口13的第四位为输出模式

P M14=0XF0; //端口14的第四位为输出模式

P M15=0XF0; //端口15的第四位为输出模式

}

//……………………………按键中断函数……………………// void InitKey_INTKR(){

PM4 = 0x3F; //P4的六个端口设置为输入模式

P U4 = 0x3F; //接通上拉电阻

K RM = 0x3F; //允许六个按键中断

K RMK = 0;

P M3.0 = 1;

P U3.0 = 1;

E GP.5 = 1;

P MK5 = 0;

P PR5 = 0;

K RPR = 1;

}

//……………初始化lcd函数……………………//

void Init_Lcd(){

P FALL=0x0F; //所有接lcd引脚指定为lcd引脚

L CDC0=0x34; //设置原时钟和时钟频率

L CDMD=0x30; //设置lcd电压为3/5电压

L CDM=0xC0; //4分时1/3偏压模式

}

//………………初始化定时器Inter函数……………………// void Init_Inter(){

C RC00.0=0; //CR000为比较寄存器

P RM00=0X04; //计数时钟为fprs/2^8

C R000=0X7FFF;//时间间隔为1s

T MMK010=1; //TMMK010中断屏蔽

T MMK000=0; //TMMK000中断允许

T MC00=0X0C; //TM00和CR000相等时进入清零&启动模式}

void Time(){

s econd++;

}

//……………………………按键中断函数……………………// void OnKeyPress(){

D I();

s witch(P4&0x3F) //判断哪个按键按下

{

case 0x3e:

相关文档
最新文档