|
DS12CR887: CS片选信号13-PC7 AS地址选通输入14-PC6 WR读/写输入15-PC5 DS数据选通写或读输入17-PC4 并行数据口-PA
#include<avr/io.h>
void delay(unsigned int z);//1MS延时子函数
void mcu_init();//ATMEGA16初始化函数
void write_ds(unsigned char add,unsigned char date);//DS12CR887数据读取写入
unsigned char read_ds(unsigned char add);//DS12CR887数据读取
int main(void)
{
mcu_init();//ATMEGA16初始化函数
write_ds(0x0A,0x20);//开启内部振荡,速度选择为0000
write_ds(0x0B,0x2e);//二进制格式,24小时制,方波使能,闹钟
while(1)
{
HC_595_input(table[read_ds(0)%10]);//读取秒
}
}
void delay(unsigned int z)//1MS延时子函数
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=890;y>0;y--);
}
void mcu_init()//ATMEGA16初始化函数
{
DDRA=0XFF;//定义PA口为输出
PORTA=0XFF;//PA口上拉
DDRB=0XFF;//定义PB口为输出
DDRC=0XFF;//定义PC口为输出
}
void write_ds(unsigned char add,unsigned char date)//DS12CR887数据写入
{
PORTC|=(1<<PC6);//地址选通输入14置为高电平
PORTC|=(1<<PC4);//数据选通或读输入17置为高电平
PORTC|=(1<<PC5);//读/写输入15置为高电平
PORTC&=~(1<<PC7);//片选信号13置为低电平
PORTA=add;
delay(1);
PORTC&=~(1<<PC6);//地址选通输入14置为低电平
PORTC&=~(1<<PC5);//读/写输入15置为低电平
PORTA=date;
delay(1);
PORTC|=(1<<PC5);//读/写输入15置为高电平
PORTC|=(1<<PC6);//地址选通输入14置为高电平
PORTC|=(1<<PC7);//片选信号13置为高电平
}
unsigned char read_ds(unsigned char add)//DS12CR887数据读取
{
unsigned char date;
PORTC|=(1<<PC6);//地址选通输入14置为高电平
PORTC|=(1<<PC4);//数据选通或读输入17置为高电平
PORTC|=(1<<PC5);//读/写输入15置为高电平
PORTC&=~(1<<PC7);//片选信号13置为低电平
PORTA=add;
delay(1);
PORTC&=~(1<<PC6);//地址选通输入14置为低电平
PORTC&=~(1<<PC4);//数据选通或读输入17置为低电平
date=PORTA;
delay(1);
PORTC|=(1<<PC4);//数据选通或读输入17置为高电平
PORTC|=(1<<PC6);//地址选通输入14置为高电平
PORTC|=(1<<PC7);//片选信号13置为高电平
return date;
}
(原文件名:QQ截图未命名.png)
(原文件名:2.png) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|