我找到一段C语言写的单片机点亮一个流水灯程序,可是我把
while(1)
{
}
去掉后,开发板上的流水灯全都亮了。为什么?
源程序
sbit P10 = P1^0;//要控制的LED灯
sbit P11 = P1^1;//要控制的LED灯
sbit P20 = P2^0;//关闭数码管
sbit P21 = P2^1;//关闭数码管
sbit CS88 = P2^2;//关闭点阵
/******************************主函数*****************************/
void main (void){
P1=0x00; //关闭数码管
P20=0; //关闭数码管
P21=0; //关闭数码管
CS88=0; //关闭点阵
//此方法使用1个字节对单个端口赋值
P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉,
//ff换算成二进制是 1111 1111
P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮
//0xfe是16进制,0x开头表示16进制数,
//fe换算成二进制是 1111 1110
while (1) //主循环
{
//主循环中添加其他需要一直工作的程序
}
}
/*****************************************************************/
你好。我后来也领教到了程序跑飞的意外。谢谢。学习单片机,汇编语言是必不可少的吗?我现在用c语言入门有没有什么好的资料书籍可以学习呢?
追答学习单片机,汇编语言必不可少!因为单片机控制,是无法绕过汇编语言的,在精确定时及控制时就算C语言编程,也需要确认程序的执行时间,这就需要通过编译后的汇编代码计算!并且C语言的代码普遍比汇编的耗时多,必要情况(精确定时、高效率程序代码)需要汇编语言的嵌入!C语言的入门还是谭浩强的比较好吧,现在大部分院校还是谭浩强的书用的较多!然后单片机和C语言的配合可以看下keil C的用户手册!基本就没问题了,剩下的就是经验值了!
那是如何跑偏的呢?为什么八个二极管全亮了?