⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 com.c

📁 DMX通讯程序。用于控制LED的亮度。RGB三中颜色。
💻 C
字号:
/*
本程序用于中断方式的串口通信演示
设置一个bit: com_sended  作为 sbuf = 0些5 执行完毕标志(以免和串口中断争用)
本段程序可以用于 51串口之自发自收演示工作
作者:  haokeer
时间:  07.2.13
版权申明:  所有权力作者保留
*/
#include <stdio.h>
#include <REG2051.H>

unsigned char recbuf0,recbuf1,recbuf2,recbuf3,recbuf4;
unsigned int count1;

unsigned int x2;
unsigned int x3;

bit com_sended ;

void delay1(){
unsigned int x1,x2,x3;
 for(x1=0;x1<10;x1++){
  for(x2=0;x2<10;x2++){
   for(x3=0;x3<10;x3++){
    x2+=1;
    x3+=1;
    x2-=1;
    x3-=1;
   }
  }
 }
}
void main(void) {

    //初始化串行口和波特率发生器
 SCON =0x58;          //选择串口工作方式,打开接收允许
 TMOD =0x21;          //定时器1工作在方式2,定时器0工作在方式1
 TH1 =0xfd;           //实现波特率9600(系统时钟11.0592MHZ)
 TR1 =1;              //启动定时器T1
 ET1 =0;

 ES=1;                //允许串行口中断
 EA = 1;               //单片机中断允许
 com_sended  = 0;
   // RS232 = 1;
    while(1){
  
  SBUF = 0x55 ;
  while(com_sended == 0);
  com_sended = 0;

  
  SBUF = 0x08 ;
  while(com_sended == 0);
  com_sended = 0;

  
  SBUF = 0x09 ;
  while(com_sended == 0);
  com_sended = 0;

  
  SBUF = 0x0a ;
  while(com_sended == 0);
  com_sended = 0;

  SBUF = 0x0b ;
  while(com_sended == 0);
  com_sended = 0;

  SBUF = 0x0c ;
  while(com_sended == 0);
  com_sended = 0;
  count1+=1;
  delay1();
 }
}

//串口中断处理
serial () interrupt 4 
{
 if (TI) {
  TI = 0;
  com_sended = 1;
    }
    if (RI){
     RI = 0; 
     recbuf0 = SBUF;
  recbuf4 = recbuf3;
  recbuf3 = recbuf2;
  recbuf2 = recbuf1;
  recbuf1 = recbuf0;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -