今天小编要和大家分享的是控制,MCU相关信息,接下来我将从基于AVR单片机的万年历程序设计,万年历 · calendar这几个方面来介绍。

控制,MCU相关技术文章基于AVR单片机的万年历程序设计万年历 · calendar

控制,MCU相关技术文章基于AVR单片机的万年历程序设计

AVR单片机万年历程序

基于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);