请帮我给下面C程序添加注释,看不懂

请帮我给下面C程序添加注释,看不懂,第1张

#include "ds18b20.h"

#include "1602.h"

#include "Key.h"

uchar temp

uchar a,b

uchar x

uchar baojing_flag,xianzai_flag

uchar const table[]={"temperature-----"}

uchar const table1[]={"baojingT-------"}

uchar i

uchar fu_flag

void main()//这个单片机的程序

{ P3=0//P3拉低

init()//初始化硬件,保证与ds18b20可协调工作// init_ds18b20()//初始化ds18b20芯片

while(1)

{

key_in()//接收按钮键入

// x=init_ds18b20()

if (baojing_flag==1)

{

write_com(0x80)

for (i=0i<16i++)

{

write_data(table1[i])

}

write_com(0x80+0x40)//串口写入,加上后面的写入应该是一个通讯协议

write_data('H')

write_data(':')

write_data(' ')

write_data(0x30+8)

write_data(0x30+5)

write_data(' ')

write_data('C')

write_data(' ')

write_data('L')

write_data(':')

write_data(' ')

write_data(0x30+0)

write_data(0x30+0)

write_data(' ')

write_data('C')

}

if ((xianzai_flag==1)||(baojing_flag==0))

{

temp=readtemperature()

if ((temp>=85)&&(temp<128))

{

led1=1

led2=0

sp=1

// delay_50ms(1)

// sp=0

// delay_50ms(1)

// sp=1

}

if ((temp>0) &&(temp<85))//根据通信返回的值在0:86区间,led1和led2点亮

{

led1=0

led2=0

sp=0//sp拉低

}

if (temp>128)//根据通信返回的值在 {led2=1 //led2 熄灭 led1=0 //led1点亮 sp=1//sp拉高

}

if (temp>128)//大于128转为负数

{

temp=256-temp

fu_flag=1

}

else

{

fu_flag=0

}

write_com(0x80)//写入通信值;

for (i=0i<16i++)

{

write_data(table[i])

}

write_com(0x80+0x40)

write_data(' ')

write_data(' ')

if (fu_flag==1)

{

write_data('-')

}

write_data(0x30+temp/100)

write_data(0x30+temp%100/10)

write_data(0x30+temp%10)

write_data(' ')

write_data('C')

write_data(' ')

write_data(' ')

write_data(' ')

write_data(' ')

write_data(' ')

write_data(' ')

write_data(' ')

write_data(' ')

write_data(' ')

delay_50ms(1)//延时50ms一般是保证通讯完成

}}

//整体看,这是单片机与ds18b20芯片进行通讯,来完成特定的任务。

#include <stdlib.h>//这两句是头文件

#include <stdio.h>

struct number

{

int n//数

int flag //标记,1为素数,0为非素数

}

void sushu(struct number num[]) //定义函数sushu,形参是结构体变量struct number 型的数组(指针)

{

int n,i,j,k

printf("Please input a number: ")

scanf("%d",&n) //输入n

for(i=2i<=ni++) //初始化,2到n

{

num[i-2].n=i//将2到n存入数组num,注意下标是从0开始的。

num[i-2].flag=1 //先默认num中的所有数都是素数,即默认所有的flag都是1。

}

for(i=2i<=ni++)

{

for(j=2(num[i-2].n*j)<=nj++) //素数j倍的数不是素数

{

for(k=2k<=nk++) //遍历num数组

{

if((num[i-2].n*j)==num[k-2].n)

num[k-2].flag=0//如果是前一个确定的素数(比如2)的倍数,则标注flag为0,即表明不是素数。

}

}

}

for(i=2i<=ni++)

{

if(num[i-2].flag) //只有flag值为1时,if语句的下面语句才执行。即只打印素数。

printf("%d ",num[i-2].n)//打印结果。

}

printf("\n")

}

int main()

{

struct number num[1000]//定义一个能容纳1000个结构体变量的数组。

sushu(num)//调用函数sushu,输出结果。

return 0 //主函数返回0,正常结束。

}


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

原文地址: http://outofmemory.cn/bake/11223356.html

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

发表评论

登录后才能评论

评论列表(0条)

保存