完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
找了很久却不知道错哪,求大侠相助!!
#include #include #define uchar unsigned char #define uint unsigned int ***it s_clka=P2^4; ***it r_clka=P2^3; ***it mosio=P2^2; ***it sck=P3^6; ***it io=P3^4; ***it rst=P3^5; uchar code dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; uchar code wela[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; uchar time_data[7]={10,6,4,17,58,8,38}; uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; uchar disp[8]; unsigned char flag; unsigned int count; void smg(uchar dat1,uchar dat2); void send(uchar dat); void out(); void write_ds1302_byte(uchar dat); void write_ds1302(uchar add,uchar dat); uchar read_ds1302(uchar add); void set_rtc(); void read_rtc(); void time_pros(); void display(); void main() { set_rtc(); while(1) { read_rtc(); time_pros(); display(); } } void set_rtc() { uchar i,j; for(i=0;i<7;i++) { j=time_data[i]/10; time_data[i]=time_data[i]%10; time_data[i]=time_data[i]+j*16; } write_ds1302(0x8e,0x00); //去处写保护 for(i=0;i<7;i++) { write_ds1302(write_add[i],time_data[i]); } write_ds1302(0x8e,0x80); } void read_rtc() { uchar i; for(i=0;i<7;i++) { time_data[i]=read_ds1302(read_add[i]); } } void time_pros() { disp[0]=time_data[6]%16; disp[1]=time_data[6]/16; disp[2]=10; disp[3]=time_data[5]%16; disp[4]=time_data[5]/16; disp[5]=10; disp[6]=time_data[4]%16; disp[7]=time_data[4]/16; } void write_ds1302_byte(uchar dat) { uchar i; for(i=0;i<8;i++) { sck=0; io=dat&0x01; dat=dat>>1; sck=1; } } void write_ds1302(uchar add,uchar dat) { rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1; } uchar read_ds1302(uchar add) { uchar i,value; rst=0; _nop_();_nop_(); sck=0; _nop_();_nop_(); rst=1; _nop_();_nop_(); write_ds1302_byte(add); for(i=0;i<8;i++) { if(io) value=value|0x80; sck=0; value=value>>1; _nop_(); _nop_(); _nop_(); sck=1; } rst=0; _nop_();_nop_(); sck=0; rst=0; _nop_(); _nop_(); _nop_(); _nop_(); sck=1; _nop_(); _nop_(); io=1; _nop_();_nop_(); return value; } void display() { uchar i; for(i=0;i<8;i++) { smg(wela[i],dula[disp[i]]); } } void smg(uchar dat1,uchar dat2) { send(dat1); send(dat2); out(); } void send(uchar dat) { uchar i; for(i=0;i<8;i++) { if((dat< mosio=1; else mosio=0; s_clka=0; s_clka=1; } } void out() { r_clka=0; r_clka=1; } |
|
相关推荐
5个回答
|
|
{:9:}
|
|
|
|
|
|
|
|
|
|
|
|
非常感谢!! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 01:14 , Processed in 0.624798 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号