单片机C语言程序分析

单片机C语言程序分析,第1张

uint8_t ptr uint8_t len 这是传入参数。 len可能是长度,ptr可能指向的是一个数组

^= 按位异或后赋值。

crc ^= ptr++; //首先将数组第一位异或后复制给Crc。之后ptr再向前一步,简单理解就是指向数组的下一位。

for(i = 0;i < 8;i++) { if(crc & 0x01) crc = (crc >> 1) ^ 0x8C; else crc >>= 1; }

//将取到数组第一位值,与0x01上。如果非零,crc就需要右移一位,再与0x8C异或。否则右移1位。每位数组值要做8次。

while(len--) //表示要判断数组内len个值。或则说是取得数组内len长度的元素个数。

return crc; //len个数组值都作完以后,将Crc返回。

我想你需要了解一下 0x01的意义,0x8C的意义。

0x01 = 0000 0001

0x8c = 1000 1100

没看到啊,已经有人答完了。哎,早知道就不写这么多字了。

明白你的意思,执行顺序是,while(1)循环中,当中断返回flag1s=1时,此时不会发生跳转,将继续执行完以前的程序部分,直到循环的边界,再返回到while(1)首部开始。

while(1)

{

if(flag1s == 1)

{

flag1s = 0;

sec++;

LedBuff[0] = LedChar[sec%10];

LedBuff[1] = LedChar[sec/10%10];

LedBuff[2] = LedChar[sec/100%10]; //比如此时flag1s=1,则继续往下执行

LedBuff[3] = LedChar[sec/1000%10];

LedBuff[4] = LedChar[sec/10000%10];

LedBuff[5] = LedChar[sec/100000%10];

} //到此返回从头开始,因此这段时间显示的还是之前的数据。

}

#include<reg51h>

unsigned char t=0;

void main()

{

TMOD=0x02;//定时器0,初值自动重新装入的8位工作方式

TH0=6;

TL0=6;//写入定时器初值,每250us中断

TR0=1;//启动定时器0

ET0=1;//打开定时器中断

EA=1;//开总中断

while(1)//程序循环

{if(t==20) //当t=20,即20x250us=0005s时执行 *** 作,同时置零t

{

t=0;

/////////////////////////////////// *** 作

///////////////////////////////////

}

}

}

void timer0() interrupt 1//中断函数,每250us中断,t的值加1

{

t++;

}

#include <reg52h>

sbit sw1=P3^0;

sbit sw2=P3^1;

sbit sw3=P3^2;

sbit sw4=P3^3;

sbit led2=P1^1;

void main()

{

while(1)

{

if(sw1==0)

P1=~P1;

while(sw1==0);

if(sw2==0)

led2=~led2;

while(sw2==0);

if(sw3==0)

P1=0x00;

while(sw3==0);

if(sw4==0)

P1=0xff;

while(sw4==0);

}

}

以上就是关于单片机C语言程序分析全部的内容,包括:单片机C语言程序分析、单片机C语言程序执行顺序问题,求解,、单片机C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9324700.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存