at89s52串口发送数据

/******************************************************************
AT89S52串口发送数据  PC通过串口接收数据


*****************************************************************/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <intrins.h>
#include <AT89X52.h>
#include <ctype.h>

/*************************************************************

定时器T1初始化

**********************************************************/

void timer1_int(void)
{
  
  TMOD=0X20;
  
  TL1=0xfd;
  TH1=0xfd;
  TR1=1;
  
}


/*******************************************************
函数://void serial_int(void)  串口初始化
参数://无


********************************************************/

void serial_int(void)
{
  
  PCON=0x80;   //SMOD=1 波特率加倍
  SCON=0x50;  //串口工作在方式1
  
}


void main(void)
{
   
  unsigned char send_data=0;
  
  unsigned char i=0;
  
  
  timer1_int();
  
  serial_int();
  
  IE=0x00;  //关闭所有中断
  
  
  while(1)
  {
    send_data=0x40;
    
   SBUF=send_data;
    while(TI==0);
    
    TI=0;
      
  }
  
  
  
}
  


 

好的,以下是一个简单的使用 C 语言编写 At89s52 串口程序的示例: ```c #include <reg52.h> // 定义波特率 #define BAUDRATE 9600 // 计算波特率需要的定时器重载值 #define TH1_SETTING -(256 - (int)(11059200UL/12/32/BAUDRATE)) // 初始化函数 void uart_init() { // 设置波特率 TH1 = TH1_SETTING; // 启动定时器1 TMOD |= 0x20; TR1 = 1; // 启用串口 SCON = 0x50; // 允许串口中断 ES = 1; // 全局中断使能 EA = 1; } // 串口发送函数 void uart_send(char c) { // 等待发送缓冲区为空 while (!TI); // 将字符发送到串口 SBUF = c; // 清除发送完成标志位 TI = 0; } // 串口接收函数 char uart_recv() { char c; // 等待接收完成 while (!RI); // 读取接收到的字符 c = SBUF; // 清除接收完成标志位 RI = 0; return c; } // 串口中断服务函数 void uart_isr() interrupt 4 { // 判断是否为接收中断 if (RI) { // 处理接收到的数据 char c = uart_recv(); // TODO: 处理接收到的数据 } // 判断是否为发送中断 if (TI) { // TODO: 处理发送完成事件 } } // 主函数 void main() { // 初始化串口 uart_init(); // 发送欢迎消息 uart_send('H'); uart_send('e'); uart_send('l'); uart_send('l'); uart_send('o'); uart_send(','); uart_send(' '); uart_send('w'); uart_send('o'); uart_send('r'); uart_send('l'); uart_send('d'); uart_send('!'); // 等待 while (1); } ``` 该示例使用了 At89s52 的内置定时器和串口模块,通过使用定时器来计算波特率,并通过串口模块来发送和接收数据。在主函数中,程序首先调用 `uart_init()` 函数来初始化串口,然后通过 `uart_send()` 函数发送了一个欢迎消息。在 `uart_isr()` 函数中,程序通过判断接收中断和发送中断的标志位,来处理接收到的数据和发送完成事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值