GP32闹钟.doc_第1页
GP32闹钟.doc_第2页
GP32闹钟.doc_第3页
GP32闹钟.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include Includes.h /总头文件#define KEYP PTD#define KEYD DDRD#define KEYPEU PTDPUEunsigned char sec=0; /秒,分,小时unsigned char minit=0;unsigned char hour=0;unsigned char k=0,0,0,0,s=0,0,0,0;/Timer1Init:定时器初始化-*/功能:将定时器初始化为一秒钟一次溢出中断。/-*void Timer1Init(void) /不允许溢出中断、不启动计数、分频因子 64 T1SC=0b00100110; /计数器寄存器初值0x0000 T1CNTH=0x00; T1CNTL=0x00; /1秒产生1次溢出中断,预置寄存器1(2457600/64)=9600 T1MODH=0x96; T1MODL=0x00;void Timer1Over(void) /定时器溢出子程序 DisableMCUInt(); sec+; /秒加1 T1SC&= (17); /清除定时器溢出标志位 EnableMCUInt();void Delay(int times) int i; for(i=0;itimes;i+); void LEDshow(unsigned char a) unsigned char i;const unsigned char Table10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; /显示码表 DDRB = 0xff; /数据口为输出 DDRC = 0xff; /位选口为输出 PTB = 0x0; /数据口输出全0,即全不亮 for (i=0;i4;i+) PTC = (0b00000001 i); /送位选信号 PTB = Tableai; /取显示码并送到LED数据线if ( (sec%2=0) &i=1)PTB= Tableai+0x80; Delay(100); unsigned char key_scan(void) /键盘扫描函数 int i; unsigned char line, row, k_value; static unsigned char lastkey=0xff; const unsigned char KBTable = 0xEE,7,0xDE,4,0xBE,1,0x7E,0, 0xED,8,0xDD,5,0xBD,2,0x7D,A, 0xEB,9,0xDB,6,0xBB,3,0x7B,B, 0xE7,C,0xD7,D,0xB7,E,0x77,F, 0x00,0xff ; /PTD0PTD3输出0 KEYD =0x0f; KEYPEU=0xf0; KEYP=KEYP & 0xF0; if (KEYP & 0xf0) = 0xf0) return 0xff; /无键按下 row = KEYP; /延时,消除抖动 for(i=0;i100;i+); if (row != KEYP) return 0xff; /判为抖动,无键按下 line=0xFE; for (i=0;i4;i+) KEYP = line; /输出扫描信号 row=KEYP; /读键盘口 if (row & 0xf0) != 0xf0) break; line=(line1)+1; if (i=4) return 0xff; k_value = (row & 0xf0) | (line & 0x0f) ; for (i=0; i32; i+=2) if (k_value = KBTablei) break; if(lastkey=KBTablei+1) return 0xff; lastkey=KBTablei+1; return KBTablei+1;void timeset() unsigned char j=0,m=0; unsigned char key; while(1) /设置当前时间 LEDshow(s); if (j=4) key=0xff; break; key=key_scan(); if (key=0xff) continue; key = key-0x30; sj=key; j+; void alarmset() unsigned char j=0,m=0; unsigned char key; while(1) /设置闹钟时间 LEDshow(k); if (m=4) break; key=key_scan(); if (key=0xff) continue; key = key - 0x30; km=key; m+; /主函数void main() unsigned char a=0,0,0,0; unsigned char kk; DisableMCUInt(); /禁止总中断 MCUInit(); /芯片初始化 Timer1Init(); /定时器1的初始化 T1SC|=(16); /令T1SC.6=1,开放Timer1溢出中断 T1SC &= (1=60) minit+; sec=0; if (minit=60) hour+;minit=0; a0 =s0+hour/10; a1 =s1+hour %10; a2 =s2+minit/10; a3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论