No.100526 作者:雷影 邮件:xyygly@126.com ID:44593 登陆:3次 文章数:3篇 最后登陆IP:220.175.237.232 最后登陆:2006/12/13 22:07:12 注册:2005/12/16 12:44:44 财富:114 发帖时间:2006/12/11 19:21:21 发贴者IP:220.175.237.140 标题:雷影:[求助]我的1302为什么会写不进去呀,各位DX帮看下很简单的程序 摘要:No.100526[求助]我的1302为什么会写不进去呀,各位DX帮看下很简单的程序 各位DX:小弟这两天买了个1302想玩下,可是用下面最简单的程序来先初始化然后再读出时间进行显示,结果是发现1302写不进初始值,但能正常读出时间。请大家帮忙找下程序中的问题。硬件是没有问题的,是用别人已经做成功的板子来写的。先谢谢各位了! #include <reg51.h> #define uchar unsigned char #define uint unsigned int #define ADB P0 sbit ELCD=P2^5; sbit R_W=P2^6; sbit RS=P2^7; sbit clk=P3^3; sbit da=P3^4; sbit rst=P3^5; uchar code discode[]={'0','1','2','3','4','5','6','7','8','9'};//LCD显示0~9的 ASSII码 uchar sec=0;uchar hsec=0;uchar lsec=0; uchar min=0; uchar hmin=0; uchar lmin=0; uchar hour=0;uchar hhour=0;uchar lhour=0; initlcd();//LCD初始化 wrcm(uchar a);//LCD写命令字 wrda(uchar b);//LCD写数据 init1302();//1302初始化 void wr1302(uchar adr1302,uchar dat1302);//写1302 uchar re1302(uchar adr302);//读1302 retime();//读时间 dotime();//秒、分、时,时间处理 lcddisp();//LCD显示 Delay();//用延时来代替查询LCD的BF忙信号 main() { initlcd(); init1302(); while(1) { retime(); dotime(); lcddisp(); } } //***************************** retime() { sec=re1302(0x81); min=re1302(0x83); hour=re1302(0x85); } //***************************** dotime() { hsec=sec&0xf0; hsec=hsec> > 4; lsec=sec&0x0f;//拆出秒的十位、个位 hmin=min&0xf0; hmin=hmin> > 4; lmin=min&0x0f;//拆出分的十位、个位 hhour=hour&0xf0; hhour=hhour> > 4; lhour=hour&0x0f;//拆出时的十位、个位 } //***************************** lcddisp() { wrcm(0x84); wrda(discode[hhour]); wrda(discode[lhour]);//显示时 wrda(0x3a);//显示时和分的分隔符: wrda(discode[hmin]); wrda(discode[lmin]);//显示分 wrda(0x3a);//显示分和秒的分隔符: wrda ......
>>返回讨论的主题
|