📄 1.c
字号:
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
#define unchar unsigned char
#define unint unsigned int
sbit P1_0=P1^0;
unchar *re;
void ctout();
void received() ;
void chushihua();
void send();
//主函数
void main()
{
chushihua();
received();
ctout();
while(1)
{
while(P1_0==0)
{
send();
}
}
}
//延时函数
void delay(unsigned int i)
{
unchar j; //当i为1000时约延时1秒
for(;i>0;i--)
{
for(j=0;j<125;j++)
{ ; }
}
}
//初始化串口
void chushihua()
{
SCON=0x50; //允许接收数据,串口方式1
TMOD=0x20; //定时器1工作在工作方式2,定时器0工作在工作方式2
TCON=0x40; //设定时器1开始记数
TH1=0xF3; //24MHz 9600波特率
TL1=0xF3;
PCON=0x80; //SMOD=1,波特率翻倍
RI=0; //清收发标志
TI=0;
TR1=1; //开始启动定时
}
//向串口发送字符
void send(unsigned char *outdate)
{
// unchar *outdate;
unchar i;
// outdate="ATD13765113646;";
for(i=0;i<15;i++)
{
SBUF=*outdate; //输出字符
outdate++;
}
SBUF=0x0d; //发送回车字符
while(!TI); //空语句,判断字符是不是发完了
TI=0; //清TI
received();
}
//接收函数
void received()
{
if(RI) //判断是 不是收完字符
{
*re=SBUF; //读出数据
re++;
RI=0; //清RI
}
ctout();
}
//接收处理函数
void ctout()
{ switch(*re)
{
case "ERROR": send(); break;
case "OK": received(); break;
case "dial string:": delay(1000);send("ATA"); break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -