今天小编要和大家分享的是控制,MCU相关信息,接下来我将从基于AVR单片机的万年历程序设计,万年历 · calendar这几个方面来介绍。
控制,MCU相关技术文章基于AVR单片机的万年历程序设计
AVR单片机万年历程序
//***************************FileName:RTC.C************************//
//***************************ICCAVRV6.30编译**********************//
#include//寄存器定义文件
#include//使用到宏
#defineucharunsignedchar//数据类型定义
#defineuintunsignedchar//数据类型定义
#defineSD23030x64//SD2303器件IIC识别码
ucharTable[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x38,0x76};
//显示数据表0123456789LH
ucharData[4]={0,0,0,0};//DS1722
ucharEnter_Flag;//确定
ucharF_Flag;//数据应答标志
voidDelayMs(uinti)//延时函数1
{ucharj;
for(;i!=0;i--)
{for(j=2000;j!=0;j--){;}}
}
voidDisplay(uchar*p)//显示函数
{uchari,sel=0x00;
for(i=0;i《16;i++)
{PORTC=sel;
PORTA=Table[p[i]];
DelayMs(10);
sel=sel《《1;
}
}
voidNOPNOP(uchari)//延时函数2
{for(;i!=0;i--)NOP();}
voidSetSCL(uchari)//IIC时钟线SCL设置
{if(i==1)PORTB=PORTB|0x01;
elsePORTB=PORTB&0xFE;}
voidSetSDA(uchari)//IIC数据线SDA设置
{if(i==1)PORTB=PORTB|0x02;
elsePORTB=PORTB&0xFD;}
//SCL=PB^0;SD2303时钟线
//SDA=PB^1;SD2303数据线
//INTRB=PB^3;SD2303中断线A
//INTRA=PB^2;SD2303中断线B
voidStart()//IIC总线开始信号
{SetSDA(1);
SetSCL(1);
NOPNOP(50);
SetSDA(0);
NOPNOP(50);
SetSCL(0);
}
voidStop()//IIC总线停止信号
{SetSDA(0);
SetSCL(1);
NOPNOP(50);
SetSDA(1);
NOPNOP(50);
SetSCL(0);
}
voidAck()//单片机应答信号
{SetSDA(0);
SetSCL(1);
NOPNOP(50);
SetSCL(0);
SetSDA(1);
}
voidNack()//单片机非应答信号
{SetSDA(1);
SetSCL(1);