用C语言写51单片机串口通信的代码

下面是一份 C 语言代码示例,用于在 51 单片机上进行串口通信:

#include <reg52.h>
#include <stdio.h>

#define uint unsigned int
#define uchar unsigned char

sbit LED = P2^7;

uchar code table[] = "Hello World!";

void serial() interrupt 4
{
    if(RI)
    {
        LED = ~LED;
        RI = 0;
    }
}

void main()
{
    TMO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
串口通信程序,附带详细说明! //程序功能:接收串口发过来的字符,当字符分别为12345的时候分别返回OKMCU字母,当为其他字符的时候,把接收内容返回。 #include #include //内部包含延时函数 _nop_(); typedef unsigned char u8; typedef unsigned int u16; sbit SER_595 =P1^0; //串行数据输入 sbit SCK_595 =P1^1; //移位时钟脉冲 sbit RCK_595 =P1^2; //输出锁存器控制脉冲 u8 i,j,k; u8 code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; u8 temp,buf; //u8 disbuf[2]={0x00,0x00}; void sdelay(u8 n) //延时程序 { u8 i; for(i=n;i>0;i--); } /******************************************************* * * * 驱动函数 595 * * * *******************************************************/ void smg595(u8 byte) { u8 num,c; num=byte; for(c=0;c<8;c++) { SCK_595=0; num=num<<1; SER_595=CY; SCK_595=1; } for(c=0;c<8;c++) { SCK_595=0; SER_595=0; SCK_595=1; } RCK_595=0; RCK_595=1; } void dis8(u8 r,u8 c) //数码管显示程序(第c个数码管显示r) { smg595(~(1<<c)); //数码管位信号输出 P0=table[r]; //数码管段信号输出 sdelay(10); P0=0; } /********************************************************* 发送数据函数 *********************************************************/ void senddata(u8 dat) { SBUF =dat; while(!TI); TI = 0; } /********************************************************* 串行中断服务函数 *********************************************************/ void serial() interrupt 4 { RI = 0; //清除串行接受标志位 ES = 0; //关闭串行中断 buf = SBUF; //从串口缓冲区取得数据 switch(buf) { case 0x31: senddata('O');break; //接受到1,发送字符'O'给计算机 case 0x32: senddata('K');break; //接受到2,发送字符'K'给计算机 case 0x33: senddata('M');break; //接受到3,发送字符'M'给计算机 case 0x34: senddata('C');break; //接受到4,发送字符'C'给计算机 case 0x35: senddata('U');break; //接受到5,发送字符'U'给计算机 default: s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值