|
我用的是Atmega16,始终读不到正确的值!
听说是A寄存器没有启动,但是我将A寄存器设为0x20还是不行啊。
这个是读写时序,I/O口没有弄错
void DS_Write(char addr,char data) //写时序,intel方式
{
DS_DB_OUT;
DS_DS_H;
DS_RW_H;
DS_AS_H;
DS_DB=addr;
DS_AS_L;
DS_RW_L;
DS_DB=data;
DS_RW_H;
DS_AS_H;
DS_CS_H;
}
char DS_Read(char addr) //读时序,intel方式
{
char sz;
DS_DB_OUT;
DS_DS_H;
DS_RW_H;
DS_AS_H;
DS_CS_L;
DS_DB=addr;
DS_AS_L;
DS_DS_L;
_delay_ms(10);
DS_DB_IN;
sz=PINA;
DS_DS_H;
DS_AS_H;
DS_CS_H;
return sz;
}
附上主程序部分代码:
DS_Write(0x0A,0x20);
DS_Write(0,ss); //秒
DS_Write(1,0);
DS_Write(2,mm); //分
DS_Write(3,0);
DS_Write(4,hh); //小时
DS_Write(5,0);
DS_Write(6,0);
DS_Write(0x09,YYYY); //年
DS_Write(0x08,MM); //月
DS_Write(0x07,DD); //日
DS_Write(0x0A,0x20);*/
while(1)
{
ss=DS_Read(0);
mm=DS_Read(2);
hh=DS_Read(4);
//后面省略了.....
读出来的时间结果是: 04:02:00 ,分别对应相应的寄存器地址。是不是时序错了?附上时序图
![](http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_594722IF1B0R.GIF)
(原文件名:读.GIF)
![](http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_594723JBNTQ9.GIF)
(原文件名:写.GIF) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|