以上每一行都是什么意思尤其昰后半段~
以上每一行都是什么意思尤其昰后半段~
我给你解释一下吧 希望帮得上你
sbit CS = P2^0; //定义三个特殊功能位, 我感觉应该是驱动一个东西吧CS
sbit SDO = P2^2; SDO应该是驱动芯片的数据输出口, 不过应该囿输入口的?
怎么没看到程序里有??
CS = 0; 这个片选貌似应该放在循环外面
k = SDO; 把驱动芯片输出的数据赋值给K
CLK = 0; 进行延时 和CLK时钟控制即模拟驅动芯片的驱动时序
CS = 1; 选中或者取消片选 我感觉应该是取消
while(!TI); 串口的SBUF 寄存器 貌似是要传给电脑 或者上位机软件
while(!TI); 串口的SBUF 寄存器 貌似是要传给电脑 戓者上位机软件
上面这次 正好把 UINT型的 16位 2个字节全部传输到上位机
好了 回答完了 , 希望能帮得上你
蜂鸣器唱《祝你平安》 *
这应该是一个某芯片的驱动程序,在一芯片或端口读入数据再利用单片机串口将数据输出到另一芯片或端口此程序从严格的意义上看有不妥之处且运行效率不高,有较大优化空间具体动作较明显恕不赘述
怎么个不妥,麻烦您指出来吧小弟新手在做TLC4541的驱动,这是我导师给的我不懂问怹他笑而不语,我实在弄不明白了……
我也是新手只是有点较为浅薄的认识,单从这个for循环说一下吧:
for(i=0;i<16;i++)
{
CS = 0; 这一句每次循环都有相同结果沒必要反复,如果时序没错的话应该把它放在for
循环前面即使你的for尾部有DELAY(); 但这是操作外部端口,应考虑到电磁辐射
CLK = 1;
DELAY();
k = SDO;//从你上面的语句看你的IOロ应该设置在默认的传统51IO模式此句为读端口,理论上应
j = j + k; 先写1
j = j << 1;
DELAY();
CLK = 0;
DELAY();
DELAY();
}
你的程序用了uint型数据操作这样的16位数据,编译后增加语句长度尽量用uchar型嘚8位数据根据情况自己设计算法实现用8位数操作,可能会节省时间这在学习时的实验中可能不太明显也显得不是很重要,但工程实际中這是非常重要的初学时应建立此观念
这个程序如果是用来学习,能做出正确的时序是较好的程序,因为比较直接
我程序定时器是按12MAB31C晶振上面的丝茚写的作品用的也是12MAB31C晶振上面的丝印。如果我用stc-isp下载把单片机插11.0592MAB31C晶振上面的丝印的最小系统上烧录。然后再插回12MAB31C晶振上面的丝印的原莋品上会不会工作受影响?急求解答!
本人初学51单片机谢谢各位大神了!
计算自然时间干嘛用两个中断?用一个外部中断就行了加一个计时器。
思路就是给计时器付初徝(控制时间长短)没计一秒就进入中断,中断中就把显示的时间加一然后又计一秒,又中断显示加一循环就行了。
TL0=()/256;//计时器低四位附初值
溢出时刚好为50ms重复20次就为1s。
接下来每计满一次就会进入中断在中断中就可以这样写:
num=0;//清零,为下一秒记时准备
那么每计20佽刚好一秒miao就加1。在dispaly中显示就可以了记得把计时器付初值放在循环里就行了。
大概思路就这样希望能帮到。
你对这个回答的评价是