


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*PCF8563 可调时钟日历 定义 P0 口为段输出端口 定义 P1 口为位输出端口 用 74HC573 驱动数码管 四按键可调时间日期*/#include<reg52.h>#define uchar unsigned char#define uint unsigned intbit dao1S=0 。 /到 1 秒标志位bit dao2MS=0 。 / 到 2 毫秒标志位bit dao10MS=0 。 /到 10 毫秒标志位bit dao05s=0 。bit dao500MS=0 。sbit dula仁P35。 /定义日期段选sbit wela1=P3A2。/定义日期位选sb
2、it dula2=P3A4。/定义时间星期段选sbit wela2=P3A3 。 /定义时间星期位选sbit shanshuo=P2A4 。uchar num,num1,num2,main_flag 。sbit key1=P2A0 。sbit key2=P2A1 。sbit key3=P2A2 。sbit key4=P2A3 。bit set,xiaoshi,fenzhong,miaozhong,xingqi,nianfen,yuefen,rifen 。sbit scl=P3A0。定义 8563 I2C 的时钟线sbit sda=P3A1 。 /定义 8563 I2C 的数据线#define
3、led_data P0/定义 P0 口为段输出端口#define led_wei P1/定义 P1 口为位输出端口char a,miao,shi,fen,number, b,ms,mg,fs,fg,ss,sg,count 。char day,week,month,year 。uchar tabtime=0,0,0,0,0,0,0,0 。 /时间星期缓冲区uchar tabdata=0,0,0,0,0,0,0,0 。 /日期缓冲区uchar weitime=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80。 /时间星期显示位uchar weidata=0x01,0x
4、02,0x04,0x08,0x10,0x20,0x40,0x80。 /日期显示位uchar tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90。 /0-9 数字uchar xing=0xf9,0xa4,0xb0,0x99,0x92,0x82,0x80。#define KEY_1 0x0e / 定义各按键键值#define KEY_2 0x0d#define KEY_3 0x0b#define KEY_4 0x07#define KEY_NULL 0x0f#define KEY_PRESS 0x80 / 定义各按键状态#define KEY
5、_LONG 0x40#define KEY_STATE_INIT 0 / 定义按键状态#define KEY_STATE_PRESS 1#define KEY_STATE_LONG 2#define KEY_STATE_UP 3#define KEY_LONG_PERIOD 20 / 定义长按键的 TICK 数,以及连发间隔的 TICK 数#define KEY_CONTINUE_PERIOD 10uchar KeyScan(> / 按键扫描函数if(key1=0> return KEY_1 。if(key2=0> return KEY_2 。if(key3=0> re
6、turn KEY_3 。if(key4=0> return KEY_4 。return KEY_NULL 。uchar GetKey(>uchar keyRetu=0,keyTemp=KEY_NULL 。static uchar s_keyState=KEY_STATE_INIT,keyTime=0,keyLast=KEY_NULL 。 keyTemp=KeyScan(> 。switch (s_keyState>case KEY_STATE_INIT:if(keyTemp!=KEY_NULL> s_keyState=KEY_STATE_PRESS 。break。c
7、ase KEY_STATE_PRESS:if(keyTemp!=KEY_NULL> s_keyState=KEY_STATE_LONG 。keyTime=0 。 keyLast=keyTemp 。elses_keyState=KEY_STATE_INIT 。break。case KEY_STATE_LONG:if(keyTemp=KEY_NULL>s_keyState=KEY_STATE_INIT 。keyRetu=(keyLast|KEY_PRESS> 。elseif(+keyTime>=KEY_LONG_PERIOD> / 按下时间 >1ss_keySt
8、ate=KEY_STATE_UP 。keyTime=0 。break。case KEY_STATE_UP:if(keyTemp=KEY_NULL>s_keyState=KEY_STATE_INIT 。elseif(+keyTime>=KEY_CONTINUE_PERIOD> / 按下时间 >0.5skeyTime=0 。keyRetu=(keyLast|KEY_LONG> 。break。return keyRetu 。uchar bcdtoasc(uchar cha>return (cha/16>*10+(cha%16>> 。uchar a
9、sctobcd(uchar cha>return (cha/10>*16+(cha%10>> 。/= 延时子程序 MS= void delay1(uint x>uint a,b 。for(a=x 。 a>0。 a->for(b=100。b>0。b->。/= 短暂延时 =void delay(> 。 /=8563 起始信号子程序 = void start(>sda=1。delay(> 。scl=1。delay(> 。sda=0。delay(> 。/=8563 终止信号子程序 = void stop(>sda
10、=0。delay(> 。scl=1。delay(> 。sda=1。delay(> 。/=8563 应答信号子程序 = void respons(>uchar i 。scl=1。delay(> 。while(sda=1>&&(i<250>>i+ 。 / 若无应答,重新开始发送地址 scl=0。delay(> 。/=8563 总线初始化子程序 = void p8563init(>sda=1。delay(> 。scl=1。delay(> 。/= 写入 1 字节子程序 = void write_byte(uc
11、har date>uchar i,temp 。temp=date。 / 写入数据 datefor(i=0 。 i<8。 i+>temp=temp<<1 。scl=0。delay(> 。sda=CY。 /往数据线送date最高位,循环8次送完datedelay(>。scl=1。delay(>。scl=0。delay(> 。sda=1。/释放数据总线,以便读取应答信号delay(>。/= 读取 1 字节子程序 =uchar read_byte(>uchar i,k。scl=0。delay(>。sda=1。delay(>。
12、for(i=0。 i<8。 i+> /读回时是一位一位的所以要读 8次scl=1。/ scl置1数据才稳定才可以读取数据delay(>。k=(k<<1>|sda。sda送过来的数据送到 k的最底位,循环8次从最高位读完sda上的数据 scl=0。delay(> 。return k。 /程序执行完返回 k 的值/= 写一 8位数据子程序 =void write_add(uchar address,uchar date>start(>。/调用起始信号子程序 ,开始写入信号write_byte(0xa2> 。 /找芯片所在地址respons
13、(>。/调用应答信号write_byte(address> 。 /找芯片内部存储器地址respons(>。write_byte(date> 。 / 写入数据,写进芯片内部存储器respons(>。stop(>。 /调用终止信号子程序,终止信号写入/= 读一 8 位数据子程序 =uchar read_add(uchar address>uchar date。start(>。/ 调用起始信号子程序write_byte(0xa2> 。 /取芯片地址 respons(>。write_byte(address> 。 /取芯片内部存储器地址
14、 respons(>。start(>。/ 调用起始信号子程序 ,开始读取信号write_byte(0xa3> 。 /芯片读地址 respons(>。date=read_byte(>。 /把读取字节子程序的返回值给datestop(>。return date。 / 程序执行完返回 date 的值/= 写时间子程序 =void write_8563(uchar w_miao,uchar w_fen,uchar w_shi,uchar w_day,uchar w_week,uchar w_month,uchar w_year> p8563init(>
15、。start(> 。write_add(0x00,0x00> 。write_add(0x01,0x00> 。write_add(0x02, w_miao> 。delay1(100> 。 write_add(0x03,w_fen> 。delay1(100> 。 write_add(0x4,w_shi> 。delay1(100> 。 write_add(0x05,w_day> 。delay1(100> 。write_add(0x06,w_week> 。delay1(100> 。write_add(0x7,w_month&
16、gt; 。delay1(100> 。write_add(0x8,w_year> 。delay1(100> 。/= 读时间子程序 =void read_8563(>miao=read_add(0x02>&0x7f 。 /获取秒数据miao=(miao&0xf0>>>4&0x0f>*10+(miao&0x0f>。 /BCD 码转换成 10 进制数/if(miao>=60>miao=0 。 fen=read_add(0x03>&0x7f 。 / 获取分钟 fen=(fen&0
17、xf0>>>4&0x0f>*10+(fen&0x0f> 。 /BCD 码转换成 10 进制数 /if(fen>=60>fen=0 。 shi=read_add(0x04>&0x3f 。 / 获取小时shi=(shi&0xfO>>>4&0x0f>*10+(shi&0xOf>。/BCD 码转换成 10 进制数/if(shi>=24>shi=0 。 week=read_add(0x06>&0x07 。 /获取星期 /if(week>6>w
18、eek=0 。 day=read_add(0x05>&0x3f 。 /获取日数据day=( day&0xf0>>>4&0x0f>*10+( day&0x0f> 。 /BCD 码转换成 10进制数 / if( day>=31> day=0 。 month=read_add(0x07>&0x1f 。 /获取月 month=(month&0xf0>>>4&0x0f>*10+(month&0x0f>。 /BCD 码转换成 10 进制数/ if(month&
19、gt;=24>month=0 。 year=read_add(0x08>&0xff 。 /获取年 year=(year&0xf0>>>4&0x0f>*10+(year&0x0f>。 /BCD 码转换成 10 进制数 void uinit(> wela1=0。 dula1=0。 wela2=0 。 dula2=0 。TMOD=0X01 。/ TH0=(65536-50000>/256 。/ TL0=(65536-50000>%256 。TH0=0XF8 。/2msTL0=0XCC 。EA=1 。ET0=1
20、 。TR0=1 。void T_0time(> interrupt 1/*TH0=(65536-45872>/256 。TL0=(65536-45872>%256 。 */ TH0=0XF8 。/2msTL0=0XCC 。num+ 。/关闭日期位选通/关闭日期段选通/关闭时间星期位选通/关闭时间星期段选通num1+ 。num2+ 。 count+ 。if(num1>=5>num1=0 。dao10MS=1 。if(num2>=250>num2=0 。dao500MS=1 。if(!(count%25>> set = !set 。if(cou
21、nt=500>count=0 。if(num>=250>num=0 。shanshuo=shanshuo。void updatetime(>read_8563(>。 / 读取秒 时 分tabtime0=shi/10 。tabtime1=shi%10 。tabtime2=fen/10 。tabtime3=fen%10 。tabtime4=miao/10 。 tabtime5=miao%10 。 tabtime6=week%10 。 tabdata0=2 。 tabdata1=0 。tabdata2=year/10 。tabdata3=year%10 。 tabdat
22、a4=month/10 。 tabdata5=month%10 。 tabdata6=day/10 。tabdata7=day%10 。/*/= 显示子程序 = void display(>uchar k=0 。for(k=0 。 k<8。 k+>wela2=1 。/时间星期led_wei=weitimek 。 dula2=1。 led_data=tabtabtimek 。 dula2=0。 wela2=0 。 led_data=0xff 。 delay1(1> 。 wela1=1 。 /日期 led_wei=weidatak 。 dula1=1。 led_data=t
23、abtabdatak 。 dula1=0。 wela1=0 。 led_data=0xff 。 delay1(1> 。 */void display(>wela2=1 。/时间星期led_wei=weitime0 。 dula2=1。 led_data=tabtabtime0 。if(set&&xiaoshi>led_data=0XFF 。 dula2=0。 wela2=0 。 led_data=0xff 。 delay1(1> 。 wela1=1 。 /日期 led_wei=weidata0 。 dula1=1。 led_data=tabtabdata
24、0 。 dula1=0。 wela1=0 。 led_data=0xff 。 delay1(1> 。wela2=1 。/时间星期/消除时间变化时的阴影/消除时间变化时的阴影led_wei=weitime1 。 dula2=1。 led_data=tabtabtime1 。if(set&&xiaoshi>led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。wela1=1 。 /日期led_wei=weidata1 。dula1=1。 led_data=tabtabdata1 。dula1=0。we
25、la1=0 。led_data=0xff 。delay1(1> 。wela2=1 。/时间星期led_wei=weitime2 。dula2=1。 led_data=tabtabtime2 。 if(set&&fenzhong> led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。wela1=1 。 /日期led_wei=weidata2 。dula1=1。 led_data=tabtabdata2 。 if(set&&nianfen> led_data=0XFF 。 du
26、la1=0。wela1=0 。led_data=0xff 。delay1(1> 。wela2=1 。/时间星期led_wei=weitime3 。dula2=1。 led_data=tabtabtime3 。 if(set&&fenzhong> led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。/消除时间变化时的阴影/消除时间变化时的阴影/消除时间变化时的阴影/消除时间变化时的阴影/消除时间变化时的阴影wela1=1 。 /日期led_wei=weidata3 。dula1=1。 led_da
27、ta=tabtabdata3 。 if(set&&nianfen> led_data=0XFF 。 dula1=0。wela1=0 。led_data=0xff 。delay1(1> 。wela2=1 。/时间星期led_wei=weitime4 。dula2=1。 led_data=tabtabtime4 。 if(set&&miaozhong> led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。wela1=1 。 /日期led_wei=weidata4 。dula1=
28、1。 led_data=tabtabdata4 。 if(set&&yuefen> led_data=0XFF 。 dula1=0。wela1=0 。led_data=0xff 。delay1(1> 。wela2=1 。/时间星期led_wei=weitime5 。dula2=1。 led_data=tabtabtime5 。 if(set&&miaozhong> led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。wela1=1 。 /日期led_wei=weidata5
29、 。dula1=1。 led_data=tabtabdata5 。if(set&&yuefen>led_data=0XFF 。 dula1=0。wela1=0 。led_data=0xff 。delay1(1> 。wela2=1 。/时间星期led_wei=weitime6 。dula2=1。led_data=xingtabtime6 。 / if(set&&xingqi>led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。/消除时间变化时的阴影wela1=1 。 /日期l
30、ed_wei=weidata6 。dula1=1。 led_data=tabtabdata6 。if(set&&rifen>led_data=0XFF 。 dula1=0。wela1=0 。led_data=0xff 。delay1(1> 。wela2=1 。/时间星期led_wei=weitime7 。dula2=1。 led_data=tabtabtime7 。 if(set&&xingqi>led_data=0XFF 。 dula2=0。wela2=0 。led_data=0xff 。delay1(1> 。/消除时间变化时的阴影we
31、la1=1 。 /日期led_wei=weidata7 。dula1=1。 led_data=tabtabdata7 。if(set&&rifen>led_data=0XFF 。 dula1=0。wela1=0 。led_data=0xff 。 delay1(1> 。void main(>p8563init(> 。uinit(> 。/write_8563(0x20,0x52,0x18,0x03,0x05,0x12,0x2018> 。/初始化秒 分 时 ,日,星期,月, 年while(1>updatetime(> 。display(
32、> 。if(dao10MS> / 每 10ms 扫描一次按键 dao10MS=0 。switch (GetKey(>>case (KEY_1|KEY_PRESS>: if(+main_flag>=8> main_flag=0 。switch(main_flag> case 1: xiaoshi=1 。 break。 case 2: fenzhong=1 。 xiaoshi=0 。 break。 case 3: miaozhong=1 。 fenzhong=0 。 break。 case 4: xingqi=1 。miaozhong=0 。 bre
33、ak。 case 5: nianfen=1 。xingqi=0 。break。case 6: yuefen=1 。 nianfen=0 。break。case 7: rifen=1 。yuefen=0 。 break。 case 0: rifen=0 。 break 。 case (KEY_1|KEY_LONG>:if(+main_flag>=8> main_flag=0 。switch(main_flag> case 1: xiaoshi=1 。 break。 case 2: fenzhong=1 。 xiaoshi=0 。break。case 3: miaozhon
34、g=1 。fenzhong=0 。 break。 case 4: xingqi=1 。miaozhong=0 。 break。 case 5: nianfen=1 。xingqi=0 。 break。 case 6: yuefen=1 。 nianfen=0 。 break。 case 7: rifen=1 。yuefen=0 。break。case 0:rifen=0 。break 。case (KEY_2|KEY_PRESS>:switch(main_flag>case 1:shi=read_add(0x04> 。shi= shi&0x3f 。shi=bcdtoa
35、sc(shi> 。shi+=1 。if(shi>=24>shi=0 。shi=asctobcd(shi> 。write_add(0x04,shi> 。 / 写分数据shi=read_add(0x04>&0x3f 。 / 读取秒数据shi=(shi&0xfO>>>4&0xOf>*1O+(shi&0xOf>。/BCD 码转换成 10 进制数display(> 。break 。case 2:fen=read_add(0x03> 。fen= fen&0x7f 。fen=bcdtoasc
36、(fen> 。fen+=1 。if(fen=60>fen=0。fen=asctobcd(fen> 。write_add(0x03,fen> 。 /写分数据fen=read_add(0x03>&0x7f 。 /读取秒数据fen=(fen&0xf0>>>4&0x0f>*10+(fen&0x0f>。 /BCD 码转换成 10进制数display(> 。break 。case 3:miao=read_add(0x02> 。miao= miao&0x7f 。miao=bcdtoasc(miao
37、> 。miao+=1 。if(miao=60> miao=0 。miao=asctobcd(miao> 。write_add(0x02,miao> 。 /写分数据 miao=read_add(0x02>&0x7f 。 /读取秒数据 miao=(miao&0xf0>>>4&0x0f>*10+(miao&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break 。case 4: week=read_add(0x06> 。 week= week&0x07 。we
38、ek=bcdtoasc(week> 。week+=1 。if(week>6>week=0 。/week=asctobcd(week> 。write_add(0x06,week> 。 /写分数据 week=read_add(0x06>&0x07 。/ 读取秒数据 week=(week&0xf0>>>4&0x0f>*10+(week&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break。case 5: year=read_add(0x08> 。year= y
39、ear&0xff 。year=bcdtoasc(year> 。year+=1 。 if(year>=100> year=0 。year=asctobcd(year>。write_add(0x08,year> 。 /写分数据 year=read_add(0x08>&0xff 。 /读取秒数据 year=(year&0xf0>>>4&0x0f>*10+(year&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break 。case 6:month=read_a
40、dd(0x07> 。month= month&0x1f 。month=bcdtoasc(month> 。month+=1 。if(month>=13> month=1 。month=asctobcd(month> 。10 进制write_add(0x07,month> 。 / 写分数据 month=read_add(0x07>&0x1f 。 / 读取秒数据 month=(month&0xf0>>>4&0x0f>*10+(month&0x0f> 。 /BCD 码转换成 数display
41、(> 。break 。case 7:day=read_add(0x05> 。day= day&0x3f 。 day=bcdtoasc(day> 。 day+=1 。if(day>=32> day=1 。day=asctobcd(day>。write_add(0x05,day> 。 / 写分数据 day=read_add(0x05>&0x3f 。/ 读取秒数据 day=(day&0xf0>>>4&0x0f>*10+(day&0x0f>。 /BCD 码转换成 10 进制数displ
42、ay(> 。 break。break 。case (KEY_3|KEY_PRESS>: switch(main_flag> case 1: shi=read_add(0x04> 。 shi= shi&0x3f 。shi=bcdtoasc(shi> 。 shi-=1 。if(shi<0> shi=23 。 shi=asctobcd(shi> 。write_add(0x04,shi> 。 / 写分数据 shi=read_add(0x04>&0x3f 。 / 读取秒数据shi=(shi&0xfO>>>
43、;4&0xOf>*1O+(shi&0xOf>。/BCD 码转换成 10 进制数display(> 。 break。case 2:fen=read_add(0x03> 。fen= fen&0x7f 。 fen=bcdtoasc(fen> 。fen-=1 。 if(fen<0> fen=59 。 fen=asctobcd(fen> 。write_add(0x03,fen> 。 /写分数据 fen=read_add(0x03>&0x7f 。 /读取秒数据 fen=(fen&0xf0>>&g
44、t;4&0x0f>*10+(fen&0x0f>。 /BCD 码转换成 10进制数display(> 。 break 。case 3: miao=read_add(0x02> 。 miao= miao&0x7f 。miao=bcdtoasc(miao> 。miao-=1 。 if(miao<0> miao=59 。miao=asctobcd(miao> 。write_add(0x02,miao> 。 /写分数据 miao=read_add(0x02>&0x7f 。 /读取秒数据 miao=(miao&am
45、p;0xf0>>>4&0x0f>*10+(miao&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break 。case 4: week=read_add(0x06> 。 week= week&0x07 。week=bcdtoasc(week> 。week-=1 。 if(week<0> week=6 。week=asctobcd(week> 。write_add(0x06,week> 。 /写分数据 week=read_add(0x06>&0x07 。/
46、读取秒数据 week=(week&0xf0>>>4&0x0f>*10+(week&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。break。case 5:year=read_add(0x08> 。year= year&0xff 。year=bcdtoasc(year> 。year-=1 。if(year<0> year=99 。year=asctobcd(year>。write_add(0x08,year> 。 / 写分数据 year=read_add(0x08&g
47、t;&0xff 。 / 读取秒数据 year=(year&0xf0>>>4&0x0f>*10+(year&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。break 。case 6: month=read_add(0x07> 。 month= month&0x1f 。month=bcdtoasc(month> 。month-=1 。if(month<1>month=12 。month=asctobcd(month> 。write_add(0x07,month>
48、 。 / 写分数据month=read_add(0x07>&0x1f 。 / 读取秒数据 month=(month&0xf0>>>4&0x0f>*10+(month&0x0f> 。 /BCD 码转换成 10 进制 数display(> 。break 。case 7: day=read_add(0x05> 。 day= day&0x3f 。day=bcdtoasc(day> 。day-=1 。if(day<1>day=31 。day=asctobcd(day>。write_add(0x
49、05,day> 。 / 写分数据day=read_add(0x05>&0x3f 。/ 读取秒数据 day=(day&0xf0>>>4&0x0f>*10+(day&0x0f>。 /BCD 码转换成 10 进制数display(> 。break。break 。case (KEY_2|KEY_LONG>:switch(main_flag>case 1:shi=read_add(0x04> 。shi= shi&0x3f 。shi=bcdtoasc(shi> 。shi+=1 。if(shi&g
50、t;=24>shi=0 。shi=asctobcd(shi> 。write_add(0x04,shi> 。 / 写分数据shi=read_add(0x04>&0x3f 。 / 读取秒数据shi=(shi&0xfO>>>4&0xOf>*1O+(shi&0xOf>。/BCD 码转换成 10 进制数display(> 。break 。case 2:fen=read_add(0x03> 。fen= fen&0x7f 。fen=bcdtoasc(fen> 。fen+=1 。if(fen=60&
51、gt;fen=0。fen=asctobcd(fen> 。write_add(0x03,fen> 。 /写分数据fen=read_add(0x03>&0x7f 。 /读取秒数据fen=(fen&0xf0>>>4&0x0f>*10+(fen&0x0f>。 /BCD 码转换成 10进制数display(> 。break 。case 3:miao=read_add(0x02> 。miao= miao&0x7f 。miao=bcdtoasc(miao> 。miao+=1 。if(miao=60>
52、; miao=0 。miao=asctobcd(miao> 。 write_add(0x02,miao> 。 /写分数据 miao=read_add(0x02>&0x7f 。 /读取秒数据 miao=(miao&0xf0>>>4&0x0f>*10+(miao&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break 。case 4: week=read_add(0x06> 。 week= week&0x07 。week=bcdtoasc(week> 。week+
53、=1 。if(week>6> week=0 。week=asctobcd(week> 。 write_add(0x06,week> 。 /写分数据 week=read_add(0x06>&0x07 。/ 读取秒数据 week=(week&0xf0>>>4&0x0f>*10+(week&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break。case 5: year=read_add(0x08> 。 year= year&0xff 。year=bcdtoa
54、sc(year> 。year+=1 。 if(year>=100> year=0 。year=asctobcd(year>。 write_add(0x08,year> 。 /写分数据 year=read_add(0x08>&0xff 。 /读取秒数据 year=(year&0xf0>>>4&0x0f>*10+(year&0x0f> 。 /BCD 码转换成 10 进制数 display(> 。 break 。case 6:month=read_add(0x07> 。month= mont
55、h&0x1f 。month=bcdtoasc(month> 。month+=1 。if(month>=13> month=1 。month=asctobcd(month> 。10 进制write_add(0x07,month> 。 / 写分数据 month=read_add(0x07>&0x1f 。 / 读取秒数据 month=(month&0xf0>>>4&0x0f>*10+(month&0x0f> 。 /BCD 码转换成 数display(> 。break 。case 7:day
56、=read_add(0x05> 。day= day&0x3f 。 day=bcdtoasc(day> 。 day+=1 。if(day>=32> day=1 。day=asctobcd(day>。write_add(0x05,day> 。 / 写分数据 day=read_add(0x05>&0x3f 。/ 读取秒数据 day=(day&0xf0>>>4&0x0f>*10+(day&0x0f>。 /BCD 码转换成 10 进制数display(> 。 break。break 。c
57、ase (KEY_3|KEY_LONG>: switch(main_flag> case 1: shi=read_add(0x04> 。 shi= shi&0x3f 。shi=bcdtoasc(shi> 。 shi-=1 。if(shi<0> shi=23 。 shi=asctobcd(shi> 。write_add(0x04,shi> 。 / 写分数据 shi=read_add(0x04>&0x3f 。 / 读取秒数据shi=(shi&0xfO>>>4&0xOf>*1O+(shi&0xOf>。/BCD 码转换成 10 进制数display(> 。 break。case 2:fen=read_add(0x03> 。fen= fen&0x7f 。 fen=bcdtoasc(fen> 。fen-=1 。 if(fen<0> fen=59 。 fen=asc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学知识考试题及答案
- 内蒙古自治区巴彦淖尔市2024-2025学年高中毕业班第二次质量检查历史试题含解析
- 天津滨海汽车工程职业学院《高等微生物学》2023-2024学年第二学期期末试卷
- 工业互联网平台2025年异构数据库融合技术在工业互联网平台创新中的应用
- 家具设计中的社会功能与环境适应性研究探讨及案例分析试题及答案
- 家具行业的消费者行为分析考题试题及答案
- 武汉航海职业技术学院《场地环境风险评价与修复》2023-2024学年第二学期期末试卷
- 教师教育教学反思的有效方法与策略试题及答案
- 家具设计中的空间美学考题及答案
- 未来出行领域技术展望试题及答案
- 《腾讯战略投资》课件
- 2024中国国新基金管理有限公司相关岗位招聘7人笔试参考题库附带答案详解
- 2025届浙江省杭州市高三下学期二模物理试题(原卷版+解析版)
- 登高车安全培训
- 成人重症患者颅内压增高防控护理专家共识(2024版)解读课件
- 在线监测运维管理体系
- 英语课件 外研版(2019)选择性必修四 Unit6 Developing ideas
- 2025年数独考试试题及答案
- 化工工艺学知到智慧树章节测试课后答案2024年秋广州大学
- 产后抑郁症的原因及护理文献汇报
- 湖北省武汉市华中师大一附中2025届高考数学全真模拟密押卷含解析
评论
0/150
提交评论