【51单片机】麻烦帮忙看看这段代码是干嘛的啊?

[复制链接]
查看11 | 回复2 | 2011-3-5 06:12:47 | 显示全部楼层 |阅读模式
#ifdef TIMER_0

void timer0 (void) interrupt 1 using 3

{

rs_shift_count--;


if (rs_shift_count > 1)
//2--9:发送数据位

{

ACC = rs_BUF;

ACC = ACC >> 1;

rs_TXD = CY;

rs_BUF = ACC;

}

else if (rs_shift_count ==1)

{

rs_TXD = 1;

}

else
{

rs_TXD = 1;

rs_TXD = 1;

rs_TXD = 1;

TCON_ENABLE_TIMER = 0;

rs_f_TI = 1;
//已发送完毕一个字节

}

}
#endif
#ifdef TIMER_1

void timer1 (void) interrupt 3 using 3

{
EA=0;

rs_shift_count--;


if (rs_shift_count > 1)
//2--9:发送数据位

{

ACC = rs_BUF;

ACC = ACC >> 1;

rs_TXD = CY;

rs_BUF = ACC;

}

else if (rs_shift_count ==1)

{

rs_TXD = 1;

}

else
{

rs_TXD = 1;

rs_TXD = 1;

rs_TXD = 1;

TCON_ENABLE_TIMER = 0;

rs_f_TI = 1;
//已发送完毕一个字节

}
EA=1;

}
#endif

回复

使用道具 举报

千问 | 2011-3-5 06:12:47 | 显示全部楼层
是实现让keyflag的值从零到2的循环,如果不这样写,那就要多写判断语句"if(keyflag>2) flag=0;",keyflag的初始值为0,第一次按键后,keyflag=(keyflag+1)%3,值变为1,执行case 1的代码,也就是计时开始;第二次按键后,keyflag=(keyflag+1)%3,值变为2,执行case 2的代码,即暂停;第三次按键后,因为此时的keyflag的值为2,所以按键后,keyflag=(keyflag+1)%3,就是keyflag=(2+1)%3,就变成0了,于是执行case 0的代码,即清零,这么写就生了那句判断语句了,实际上意思就是让它在0至2间循环。++i,就是就是先自加,后赋值,i++就是
回复

使用道具 举报

千问 | 2011-3-5 06:12:47 | 显示全部楼层
应该是通过预编译分别使用定时器0和1通过串口发送数据。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行