完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我做的数码管电子时钟想加入24c02存储 但是测试的效果是关闭电源 重新打开电源时,数码管上永远显示“15:15:15” 我的是六个共阴数码管 定时器 键盘都没有问题 不太明白24c02如何在程序中实现存储功能 请教下各位大侠
#include #include<24c02.h> //包含24c02的库 #include #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 ***it dula=P2^6; //数码管段选锁存端 ***it wela=P2^7; //数码管位选锁存端 ***it s1=P3^4; //秒增加键 ***it s2=P3^5;//分增加键 ***it s3=P3^6;//时增加键 uchar code table[]={ //数码管显示编码 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar num,shi,fen,miao,s1num; void delay(uint z) //延时子函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(void) //显示子程序 { dula=1; //显示秒个位 P0=table[miao/10]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(1); dula=1; //显示秒十位 P0=table[miao%10]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(1); dula=1; //显示分个位 P0=table[fen/10]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; //显示分十位 P0=table[fen%10]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); dula=1; //显示时个位 P0=table[shi/10]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; //显示时十位 P0=table[shi%10]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); } void keyscan()//键盘扫描 { if(s1==0) { delay(5); if(s1==0) { miao++; if(miao==60) { miao=0; } write_add(1,miao); } } if(s2==0) { delay(5); if(s2==0) { fen++; if(fen==60) { fen=0; } write_add(2,fen); } } if(s3==0) { delay(5); if(s3==0) { shi++; if(shi==24) { shi=0; } write_add(3,shi); } } } void main() //主程序 { shi=0; fen=0; miao=0; TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; init_24c02(); miao=read_add(1); fen=read_add(2); shi=read_add(3); while(1) { display(); keyscan(); } } void timer() interrupt 1 //定时器中断 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num++; if(num==20) { num=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } write_add(3,shi); } write_add(2,fen); } write_add(1,miao); } } |
|
相关推荐
7 个讨论
|
|
我曾经用汇编语言写了一个I2C读写的基本代码,请参考
SCL BIT P1.0 SDA BIT P1.1 ; (I2C操作基本子程序) START: SETB SDA ;(开始) NOP SETB SCL NOP NOP CLR SDA ;时钟scl为高时数据SDA变低。 NOP NOP CLR SCL NOP SETB SDA RET STOP: CLR SDA ;(结束) NOP SETB SCL NOP NOP NOP SETB SDA ;时钟scl为高时数据SDA变高。 RET ; (答确认) ANS: CLR SDA ;主动拉低数据线SDA NOP SETB SCL NOP NOP NOP NOP NOP CLR SCL NOP SETB SDA RET ; (读确认) ASK: SETB SDA ;等待拉低数据线SDA SETB SCL NOP NOP MOV C,SDA NOP NOP CLR SCL NOP RET ;(从I2C读一字节信息到A寄存器) INBY: PUSH 03H MOV R3,#08H CLR A IB: SETB SCL NOP NOP NOP MOV C,SDA RLC A CLR SCL NOP NOP NOP DJNZ R3,IB POP 03H RET ;(从A寄存器写一字节信息到I2C) OUTB: PUSH 03H PUSH ACC MOV R3,#08H OB: CLR C RLC A MOV SDA,C SETB SCL NOP NOP NOP NOP NOP CLR SCL DJNZ R3,OB POP ACC POP 03H RET |
|
|
|
|
|
请问你要做什么样的数据存储?闹铃?
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 13:04 , Processed in 0.805332 second(s), Total 61, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号