定时器和串口制作代码小妙招~~

每次在我们设定定时器初值的时候都会有一些难点疑问

such as

定时器小妙招~~

#include<reg52.h>
 int count=0;
main()
 {
 
	 EA=1 ;
     ET0=1;
	 TMOD=0x01;//0000 0010 定0 工作1  或者定1 工0
	 TR0=1;
	 TH0=(65536-46080)/256;	   //50ms
	 TL0=(65536-46080)%256;
	while(1);
 }
t0() interrupt 1
{
count++;
	 TH0=(65536-46080)/256;
	 TL0=(65536-46080)%256;
	 if(count==20){
	P1=~P1;
	count=0;
	}
}

在其他博主那边也会看到不一样的版本 比如

 

转变成

 

那么很多同学对此会感到疑惑这是从哪里的来的呢??

今天教同学一招

(下载一个定时器计算器,将上面的信息依次填入进去就可以得到相应的结果)

 

串口通信的小妙招

首先,观察一下代码


#include<reg52.h>
void uartinitial();		  //设置串口
main()
{
uartinitial();
while(1);
}
 void uartinitial()
 {
 SCON=0x50;	//0101 0000   串口方式1,允许接收??
 TMOD=0x20;	//0010 0000 定时器1,工作方式2
 PCON=0x00;		  //	   smod=0则波特率不加倍,=1则波特率加倍

 TH1=0xFD; //波特率9600	 
 TL1=0xFD;
 EA=1;   //打开接受中断
 ES=1;//打开总中断
 TR1=1;	 //打开定时器
 }
 void uart() interrupt 4
 {
 char a; //定义在芯片内部开辟空间给a
 a=SBUF;//外部数据传输给SBUF暂存,再送入到芯片a
 while(!RI);  //也可以是(RI==0)	  如果接收到了数据 RI自动置成1,程序往下清零 否则等待下次接收
 RI=0;//接受清零,以便于下次继续接收
 SBUF=a;  //将芯片存储的数据放到SBUF暂存,在送入PC
 while(!TI);	   //也可以是(TI==0)	如果接收到了数据 TI自动置成1,程序往下滑清零,否则等待下次发送
 TI=0;	 //接受清零,以便于下次继续发送
 }

 你会感到疑惑:

这个是怎么算出来的呢??

打开

选择

波特率计算器

(将上述内容对应填写进去然后点击生成代码,即可) 

 

这种方法是不是很方便呢~~

学到的话可以给小编点点赞哦~~~~❤

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值