51单片机C语言程序注释标注(写全)

51单片机C语言程序注释标注(写全),第1张

#include <reg51.h> //调用头文件reg51.h

void main() //主函数

{

unsigned char // 无符号字符型

tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}//定义一个数组 LED数码管译码用的码表

while(1) //主循环

{

P2=P2|0x07 // P2口与0x07按位进行或运算

while(P2&0x07==0x07)//如果P2扣低三位为111则原地等待

switch(P2&0x07)//获取P2低三位值并且据此执行响应的 *** 作

{

0x06:P0=tab[0x0D]break//P2低三位为06H,数码管显示“d”

0x05:P0=tab[0x0E]break//P2低三位为05H,数码管显示“E”

0x03:P0=tab[0x0F]break//P2低三位为03H,数码管显示“F”

}

}

}

ORG 0000H

LJMP START

ORG 0100H

START: MOV TMOD,#01H 置T0为工作方式1

MOV TH0,#3CH 置T0定时初值50ms

MOV TL0,#0B0H

CLR TF0

SETB TR0 启动T0

CLR A

• #define uint unsigned int //定义无符号整型变量

• #define uchar unsigned char //定义无符号字符型变量

• bit flag=0,ftser=1,frser=1 //定义位

• void delay(uint z)   //延时子程序(Z来控制延时时间)具体时间要看外面的晶振

• {

• uint x,y//定义变量

•for(x=0x<zx++) //for循环

• for(y=0y<248y++)

• }

• void serial() interrupt 4 using 2 //串口中断子程序 入口4

{

if(RI==1) //串口接收中断标志位 RI=1发生中断

{

RI=0//手动清除中断标志

frser=0//接收标志位置0

}

else

{

TI=0 //串口发送中断标志位 T1=1发生中断

ftser=0 //发送标志位置0

}

}

void main(void) //主程序

{

uchar i=0,j=0,temp=0xff

TMOD=0X20 //串口中断初始化 设置为8位自动重装定时器

TH1=0XFd//高8位时间常数

TL1=0XFd//低8位时间常数

SCON=0X50//串行口工作方式2 允许接收

PCON=0X00//波特率不倍增

ES=1 //串行中断使能

EA=1 // 打开中断使能

TR1=1 //打开定时器

while(1)

{

while(frser==1) //判断接收是否完成

frser=1//接收标志位置1

i=SBUF //串口数据变量 i

P0=255-i //将数据转反码后由P0口输出

delay(200) //调用延时

SBUF=i//串口发送数据(和接收的一样)

ftser=1//发送标志位置1

while(ftser==1)//等待串口发送完成

}

里面可以加一些数据判断的,这个小程序玩起来没什么意思,不是很直观!

总体看也就是利用串口助手发一个数据,然后由单片机回传一个相同的数据并在p0口输出其反码


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

原文地址: http://outofmemory.cn/yw/11105511.html

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

发表评论

登录后才能评论

评论列表(0条)

保存