📄 chuankou.c
字号:
#include<reg52.h>
#include<stdio.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sfr P1M0=0x91;
sfr P1M1=0x92;
uchar rh;
uchar ch;
void delay1ms(unsigned int f);
void init_serial()
{
SCON=0x50;
//方式1,10位异步收发,波特率由定时器控制,单机对单机,
//允许接收
PCON=0x00; //SMOD=0,方式1、2、3的波特率不加倍
TMOD=0x21; //定时器1工作于方式2,自动装载方式
//定时器0工作方式1
// TH0=(65536-1000)%256;
//TL0=(65536-1000)/256;
TL1=0xfd; //设置定时器装载值,来设置波特率
TH1=0xfd;
// ET0=1; //开T0中断
// TR0=1; //启动定时器T0
TR1=1; //启动定时器T1
// TI=1; //有发送中断,发送中断标志
// RI=1; //有接收中断,接收中断标志
ES=1; // 开串口中断
EA=1; //开总中断
}
//发送操作在TI=0时,执行SBUF=A指令后开始,然后发送电路自动在8位
//发送字符前后分别添加一位起始位和停止位,发送完后,TI由硬件在
//发送停止后置位
//在一定条件下,向SBUF写入数据就启动了发送过程,读SBUF就启动了
//接收过程
//向串口发送一个字符
/*void timer0() interrupt 1 using 3{
// char i;
flag++;
TH0=0x00;
TL0=0x00;
if(flag==10)
{// cp=!cp;
// for(i=0;i<6;i++)
P2=0x25;
TI=1;
temp=*RAMDATA;
printf("%c",temp);
TI=0;
// RAMDATA--;
flag=0;
}
}*/
//主程序
void main()
{uchar rh=0xf6;
//P1M0=0x01;
//P1M1=0x00;
init_serial(); //初始化串口
while(1)
{//if(ch==rh)
//SBUF=0x89;
delay1ms(100);
//if (TI==1)
//break;
}
//SBUF=0x11;
}
void delay1ms(unsigned int f)
{
unsigned int i,j;
for(i=0;i<f;i++)
for(j=0;j<120;j++);
}
void serial () interrupt 4 using 3 //串口接收发送中断程序
{ES=0;
if(RI) //接收完一帧数据后,硬件自动置1,如果再接收必须
{RI=0; //软件清零RI
ch=SBUF;
}
if(TI) //发送完一帧数据后,硬件自动置1,如果再发送必须
{TI=0;
} //软件清零TI
SBUF=ch;
ES=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -