:-),转眼学习AVR也有一周了哦,接下来就开始写各种模块的代码了哦,呵呵,和51相比AVR 确实有很多的不一样的地方,但是有很多地方倒是和ARM的定义非常的相似,也许他们设计内核时参考了ARM的思路吧,还好上手不是很难。昨天晚上看了一个74HC164的驱动程序感觉有点小不解,自己做个小修改,贴出来看看哦!
//*******************************************************************
//*函数名称:void HC164_sendchar(unsigned char c)
//*函数描述:向74HC164串行发送数据,发送的方向是低位在前,高位在后
//*入口参数:unsigned char c -要发送的一个字节
//出口参数:无
//相关参数:bit HC164_data -164的数据位;bit HC164_clk - 164的时钟位
// bit HC164_mr - 164灭零
//*******************************************************************
void HC164_sendchar(unsigned char c)
{
unsigned char tmp;
for(tmp=0;tmp<8;tmp++)
{
if(c & 1<<tmp ==0)
{
HC164_data=0;
}
else
HC164_data=1;
HC164_clk=0;
HC164_clk=1;
}
}
幸好在CVAVR的开发环境里可以定义bit,这样的话对于位的操作就方便多了,尤其是多各个端口的位操作和51完全一样了!呵呵!快点加油哦,不要忘记自己的承诺!加油!