c51数字钟c语言程序,51单片机电子时钟C语言程序

51最基础简单易懂的单片机,差不多一个月的时间,断断续续地学习,终于算是学完了,下个目标是飞思卡尔s12x和k60 也就是ARM crotex-M4架构. 51最核心的部分,我觉得是中断的使用,一个项目离不开中断,还有就是串口的理解,还有就是IIC通信。

以 电子时钟 为结尾篇,附上代码。代码有些不怎么完美。但终究是差不多写出来了。结合了IIC通信,中断定时器的使用,键盘使用,还有液晶的显示。

#include

sbit RS = P2^7;

sbit RW = P2^6;

sbit E = P2^5;

sbit Sda = P2^0;

sbit Scl = P2^1;

sbit keyleft = P1^0;

sbit keyup = P1^1;

sbit keydown = P1^2;

sbit keyright = P1^3;

unsigned char sec=0,min=0,hour=0;

unsigned char Year[20]=" 2012.10.1 ";

unsigned char i;

unsigned int times = 0;

unsigned char countleft = 0,countright = 0;

unsigned char busycheck();

static void Start(void)

{

Sda = 1;

Scl = 1;

Sda = 0;

}

static void Stop(void)

{

Sda = 0;

Scl = 1;

Sda = 1;

}

static unsigned char Respons(void)

{

unsigned char OverTime = 0; //超时

unsigned char TempFlag = 0;

OverTime = 0;

Sda = 1; //释放数据线

Scl = 1;

while(1)

{

if(Sda) //应答信号没来

{

if(OverTime++ > 200)

{

TempFlag = 0; //应答信号长时间没有来,认为无应答

break;

}

}

else

{

TempFlag = 1; ///检测到应答信号

break;

}

}

Scl = 0;

return TempFlag;

}

static void NoRespons(void) //非应答

{

Sda = 1; //释放数据

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值