motorola的电子钟

发布者:limm20032003最新更新时间:2014-12-18 来源: laogu关键字:motorola  电子钟  mc68hc908gp32 手机看文章 扫描二维码
随时随地手机看文章
今天试着添加段代码吧。运行于mc68hc908gp32上的电子钟,显示在zlg7289的八个七段显示器上。

声控电子钟初具有普通钟的功能外,还具有15秒钟休眠功能,此时当接收到触发端触发后,点亮显示屏,显示当前时间并在15秒后关闭。以节省电能。亦可晚上睡眠时使用。

#include /* for EnableInterrupts macro */
#include /* include peripheral declarations */
unsigned char counter=0;
unsigned char second,minute,hour;
unsigned char second0,second1;
unsigned char minute0,minute1;
unsigned char hour0,hour1;
unsigned char gleaming,task;
unsigned char hs;
#define TskSetHour 0
#define TskSetMinute 1
#define TskSetSecond 2
#define TskPrint 3
#define TskSleep 4

void delay(int);
void ScreenOpen(void);
void IncreaseTime(void);
void Translate(void);
void send_command(unsigned char);
void send_single_command(unsigned char);
void send_double_command(unsigned char);
void PrintToZLG7289(void);
void GleamingHour(void);
void GleamingMinute(void);
void GleamingSecond(void);
void GleamingNone(void);
void ChangeStatus(void);
void Increase(void);
void Decrease(void);
void boot(void);

void boot(void)
{/*PLL初始化*/
    PCTL_BCS=0;
 PCTL=0x00;     //禁止PLL
 PBWC=0x80;     //自动控制方式
 PMSH=0x02;     //反馈分频器因子高位N=02H
 PMSL=0x58;     //反馈分频器因子低位N=58H
 PMRS=0x80;     //因子L=80H
 PCTL=0x22;     //P=0,E=2,启动PLL
 PCTL_PLLON=1;  //启动压控振荡器时钟
 PBWC_LOCK=0;   //LOCK位为0,频率未稳定,等待
 PCTL_BCS=1;    //频率已锁定,选PLL作为时钟源
}


void main(void) {
 CONFIG2=0x01;  //stop模式下禁止振荡器工作;内部总线时钟用作SCI的时钟
 CONFIG1=0x3d;  //COP溢出范围在2^18-2^4个CGMXCLK时钟周期;禁止COP模块
 DisableInterrupts;
 boot();
 T1SC=0b01000110;
 T1MODH=0x96;
 T1MODL=0x00;
 
 DDRA=0x00;
 DDRC=0x0f;
 DDRB=0xff;
 DDRD=0xff;
 DDRE=0xff;
 INTKBSCR_MODEK = 1;  //选择触发方式为下降沿和低电平
   INTKBSCR_IMASKK = 1; //禁止键盘中断
   INTKBIER = 0xff;       //A口都作为键盘输入
   INTKBSCR_ACKK = 1;  //键盘响应置1,用于清除IREQ
   INTKBSCR_IMASKK = 0;   //允许键盘中断
 hour=16;
 minute=27;
 second=55;
 hs=0;
 gleaming=0x0a;
 task=TskPrint;
 PTC_PTC0=1;
 GleamingNone();
 EnableInterrupts;
 for(;;);
}

void delay(int k){
 int i;
 for (i=0;i<=k;i++);
}

void ScreenOpen(void){
 char i;
 if (task==TskSleep) counter++;
 if (counter==15) {
  for(i=0;i<=8;i++){
   delay(30000);
   delay(30000);
   send_single_command(0xa1);
   counter=0;
  }
  PTC_PTC0=0;
 }
}


void IncreaseTime(void){
 second++;
 if (second==60){
 second=0;
 minute++;
  if (minute==60){
  minute=0;
  hour++;
   if (hour==24){
    hour=0;
    }
  }
 }
}

void Translate(void){
 second1=second/10;
 second0=second-second1*10;
 minute1=minute/10;
 minute0=minute-minute1*10;
 hour1=hour/10;
 hour0=hour-hour1*10;
}

void send_command(unsigned char i_command)
{
   unsigned char i;
   for(i=0; i<8; i++)
    {
      PTC_PTC1=((i_command&0x80)==0x80?1:0);
      delay(0);
      PTC_PTC3=1;           //  clk=1;
      delay(0);
      PTC_PTC3=0;            //  clk=0;
      i_command=i_command<<1;
    }
}

void send_single_command(unsigned char command){
  PTC_PTC2=0;       //enable=0
  delay(0);
  send_command(command);
  PTC_PTC2=1;       //enable=1
  delay(0);
}

void send_double_command(unsigned char command1,unsigned char command2){
  PTC_PTC2=0;       //enable=0
  delay(0);
  send_command(command1);
  send_command(command2);
  PTC_PTC2=1;       //enable=1
  delay(0);
}

void PrintToZLG7289(void){
 if (gleaming==0x0f) gleaming=0x0a;
 else gleaming=0x0f;
 
 send_double_command(0x80,second0);
 send_double_command(0x81,second1);
 send_double_command(0x82,gleaming);
 send_double_command(0x83,minute0);
 send_double_command(0x84,minute1);
 send_double_command(0x85,gleaming);
 send_double_command(0x86,hour0);
 send_double_command(0x87,hour1);
}
void GleamingHour(void){
 send_double_command(0x88,0b00111111);
}
void GleamingMinute(void){
 send_double_command(0x88,0b11100111);
}
void GleamingSecond(void){
 send_double_command(0x88,0b11111100);
}
void GleamingNone(void){
 send_double_command(0x88,0b11111111);
}
void ChangeStatus(void){
 if (task==TskPrint) {
 T1SC_TOIE=0;
 GleamingHour(); 
 task=TskSetHour;
 }
 else if (task==TskSetHour) {
 task=TskSetMinute;
 GleamingMinute();
 }
 else if (task==TskSetMinute) {
 task=TskSetSecond;
 GleamingSecond();
 }
 else if (task==TskSetSecond) {
 task=TskSleep;
 counter=14;
 ScreenOpen();
 GleamingNone(); 
 T1SC_TOIE=1;
 }
 else if (task==TskSleep){
 task=TskPrint;
 PTC_PTC0=1;
 GleamingNone(); 
 counter=0;
 }
}

void Increase(void){
 if (task==TskSetHour) {
  hour++;
  if (hour==24) hour=0;
  Translate();
  PrintToZLG7289();
 }
 if (task==TskSetMinute) {
  minute++;
  if (minute==60) minute=0;
  Translate();
  PrintToZLG7289();
 }
 if (task==TskSetSecond) {
  second++;
  if (second==60) second=0;
  Translate();
  PrintToZLG7289();
 }
}
void Decrease(void){
 if (task==TskSetHour) {
  if (hour==0) hour=24;
  hour--;
  Translate();
  PrintToZLG7289();
 }
 if (task==TskSetMinute) {
  if (minute==0) minute=60;
  minute--;
  Translate();
  PrintToZLG7289();
 }
 if (task==TskSetSecond) {
  if (second==0) second=60;
  second--;
  Translate();
  PrintToZLG7289();
 }
}

interrupt 6 void OverFlow(){
T1SC_TOIE=0;
T1SC_TOF=0;
if (hs==0){
 hs=1;
}
else {
 hs=0;
 ScreenOpen();
 IncreaseTime();
 Translate();
 PrintToZLG7289();
}
T1SC_TOIE=1;
}
interrupt 15 void KBI_ISR(void)
{
  unsigned char i;
     INTKBSCR_IMASKK = 1;  //屏蔽键盘中断
     delay(30000);
  if (task!=TskPrint && task!=TskSleep){  
   if (PTA_PTA2==0)
    Decrease();
   if (PTA_PTA3==0)
    Increase();
  }
  if (PTA_PTA0==0)
    ChangeStatus();
  if (PTA_PTA4==0) {
   PTC_PTC0=1;
   counter=0;
  }
  INTKBSCR_ACKK = 1;    //清除中断确认
  INTKBSCR_IMASKK = 0;  //开启键盘中断
}

关键字:motorola  电子钟  mc68hc908gp32 引用地址:motorola的电子钟

上一篇:电路中的"地"
下一篇:单片机笔记——显示驱动

推荐阅读最新更新时间:2024-03-16 13:49

摩托罗拉正式发布Moto G7系列四款新机
摩托罗拉昨天在巴西正式发布了旗下G7系列新机——Moto G7、Moto G7 Play、Moto G7 Power及Moto G7 Plus。   Moto G7   Moto G7机身尺寸157 x 75.3 x 8 mm,重172g。该机配备一块6.2英寸的19:9 FHD LCD水滴屏,搭载高通骁龙632处理器;配备4GB+64GB机身存储(可拓展至512GB);拍照方面,该机后置12MP+5MP双摄像头,前置8MP摄像头。内置3000mAh电池,搭配15W充电,Type-C接口,支持NFC,后置指纹解锁。售价299美元起(约2016元人民币)。   Moto G7 Play   Moto G7
[手机便携]
<font color='red'>摩托罗拉</font>正式发布Moto G7系列四款新机
摩托罗拉Moto G22亮相 配备90Hz显示屏+四摄像头
摩托罗拉正式推出Moto G22 。提供90Hz屏幕、5,000mAh电池和联发科Helio芯片组等规格。 摩托罗拉Moto G22的售价为169.99欧元(约合188美元),是唯一一款配备4GB RAM 和64GB 内部存储的变体。智能手机有宇宙黑、珍珠白和冰山蓝三种颜色。 摩托罗拉Moto G22配备6.5英寸 Max Vision 显示屏,具有 HD+(1600 x 720像素)分辨率和90Hz 刷新率。它是一个打孔面板,所有三个侧面都有窄边框,但下巴更厚。 它的前部有一个1600万单摄像头,后部有四个摄像头。有一个采用四像素技术的5000万主镜头。据说该传感器可提供12.5MP 图像。它将由一个800万超广角镜头和
[手机便携]
联想再遭美国337调查
中国贸易救济信息网4月29日讯,美国国际贸易委员会(ITC)投票决定对特定移动电子设备(Certain Mobile Electronic Devices)启动337调查。 2022年3月30日,日本Maxell, Ltd. of Japan向美国ITC提出337立案调查申请,主张对美出口、在美进口和在美销售的该产品侵犯了其专利权,请求美国ITC发布有限排除令、禁止令。 其中,北京联想集团、美国Lenovo (United States) Inc. of Morrisville, NC、美国Motorola Mobility LLC of Libertyville, IL为列名被告。 美国国际贸易委员会将于立案后
[家用电子]
联想再遭美国337调查
双核智能揭秘 摩托罗拉Atrix 4G全拆解
    自2011年国际消费电子展以及2011年移动世界大会中登场起,摩托罗拉公司全新一代智能手机——摩托罗拉Atrix 4G (参数 论坛 软件) 迅速成为了智能手机领域炙手可热的明星。而随着这款手机的上市,无疑意味着双核处理器智能手机已经从设计图纸中走进了现实,并终于来到了我们的身边。 摩托罗拉Atrix 4G是摩托罗拉公司新一代高端产品     同时,摩托罗拉Atrix 4G作为一款目前智能手机市场中硬件性能最为强大产品,nVidia Tegra 2双核处理器平台、8核心超低功耗GeForce图形芯片、4英寸qHD分辨率(960x540像素)显示屏幕、16GB机身储存空间以及1GB级别DD2运行内存等高端硬件规格也在刺
[手机便携]
摩托罗拉发布防碎屏手机
    10月27日消息,据国外媒体报道,摩托罗拉周二发布了新旗舰Droid Turbo 2,最大特点是在正常使用中跌落将毫发无损。这种跌落保护级别对于全触屏手机来说还是第一次,成为摩托罗拉新旗舰的最大卖点。 Droid Turbo 2将在美国运营商Verizon独家发布,但是屏幕保护技术将应用到其他摩托罗拉手机。摩托罗拉总裁Rick Osterloh周二接受采访时表示,计划将防碎屏技术应用到公司的其他产品上。然而,由于成本问题,只会应用到比较昂贵的旗舰智能手机上。 这一功能的引入使得摩托罗拉公司满足了智能机消费者的一大刚需,一款不会碎屏的大屏幕手机。摩托罗拉和Verizon表示这款设备将为手机屏幕提供最好的保护,但是
[手机便携]
这些电子产品你都用过?那你真是暴露年龄了
    如果下面这些淘汰的电子产品,你都见过且用过,那么年龄真的是不小了,不信吗?   众所周知,电子产品淘汰的速度一直很快,如果10年算一个轮回,那么现在的手机圈跟之前诺基亚时代相比,早已是天翻地覆,PC被边缘化移动互联才是现在的大趋势。   小霸王学习机 duang~   摩托罗拉BB机 这个小编没用过……   俄罗斯方块游戏机 多少人的童年……   摩托罗拉的大哥大 太久远了……   电子宠物机 这个应该不少人玩过   随身听 Walkman,情怀啊   胶卷相机 这个应该很多家庭都有   黑白电视机 很经典……   收音机 很常见……   当然了,类似上述这些古老的物件,还有很多大家可以跟帖讨论,不得不说,那些曾经陪伴过我
[手机便携]
超强多功能电子钟程序
;***************************************************************************** ;实现功能:定时功能,参数是0.00s~99H,最多可以同时定时11个数(最先输入的 ;定时应为最大的定时时间)整点报时,闹钟,计分器,省电模式,显示星期 ;红外遥控 ;秒表功能:参数是0.00s~24H,最多可以存储11个瞬间时间。 ;显示当前时间 ;键盘功能:(平面图) ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;%% 0 %% 1 %% 2 %% 3 %% ;%%%%%%%%%%%%%%%%%%%%
[单片机]
摩托罗拉称华为窃取其商业机密已达10年
  新浪科技讯 北京时间7月22日上午消息,据国外媒体报道,摩托罗拉起诉华为,称华为10多年来精心策划窃取其商业机密。   摩托罗拉在提交给美国北伊利诺斯州地方法院的诉讼书中称,在过去的10年中,华为与10多名摩托罗拉员工合谋窃取无线网络设备方面的机密信息。   诉讼书中提及的10多名员工目前已经不在摩托罗拉任职,其中包括潘少伟(音译,Shaowei Pan),在摩托罗拉任职的几年中,他一直秘密向华为创始人兼董事长任正非汇报工作。摩托罗拉还称,潘少伟离职后成立了名为“Lemko”的公司,目的是从摩托罗拉窃取更多机密信息。   而华为称,摩托罗拉的诉讼“完全没有法律依据”,华为仅仅是Lemko的设备供应商。而Lemko在法庭文
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved