假设要发送一组数据 Send[10]一般采用查询发送(循环发送)方式:
unsigned char Send[10]; //发送量 unsigned char i; //循环量 for(i=0;i<10;i++) { SBUF= Send[i]; //发送 while(TI==0); //等待发送完成 TI=0; //清标志 }
采用中断发送方式:
unsigned char Send[10]; //发送量 unsigned char num; //发送数据量 unsigned char *p; //发送用指针 //发送时: num=10; //定义发送数据量 p=&Send ; //取首地址 SBUF=*p; //发送第一个数据,启动发送中断 //中断代码: void ComInt() interrupt 4 { if(RI) RI=0; //接收中断略; if(TI) //发送中断处理 { TI=0; //清标志 num--; //计数减1 p++; //指针加1 if(num >0) SBUF=*p; //数据继续发送至全部发完 } }
中断发送优点:省去循环等待时间,以上面例子为例,9600bps时查询发送约占用单片机10ms多,而中断发送只占单片机几十微秒(单片机速度越快,占用时间越少)。
中断发送缺点:代码稍复杂,发送过程不易控制。
关键字:C51 串口接收 发送 查询 中断方法
引用地址:
C51:串口接收和发送,查询与中断方法
推荐阅读最新更新时间:2024-03-16 14:57
《初学者C51自学笔记》之数码管
图(b)为数码管的解剖图,分别是共阴和共阳型;共阴为例,若想显示数字1,从a端到dp端接P0^0~~P0^7;所以P0=0x06(00000110{从高位到低位}); 显示方式: 静态显示: 静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。 动态显示: 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人
[单片机]
STM8L151C8单片机学习例程(4)——串口发送字符,字符串
STM8L_4_USART: 1.User:工程及main文件 2.Hardware:USART,CLK,LED,Delay 3.STM8L15x_StdPeriph_Driver:STM8自带库文件 4.Debug:hex文件存放于EXE文件夹 5.Function: 发送字符,字符串,整形,浮点,hex等 /** ****************************************************************************** * @file main.c * @author Alex——小白 * @version V1.0 * @date
[单片机]
XTR111 —高精度电压至电流转换器/发送器
XTR111 是一款专门针对标准 0mA-20mA 或 4mA-20mA 模拟信号而精心设计的高精度电压至电流转换器 (voltage-to-current converter),其 能够提供高达 36 mA 的电流 。电阻 器 RSET 可对 输入电压与输出电流之比 进行设置 。 此外,该产品也可针对电压输出进行调整。 外部 P-MOSFET 晶体管可确保实现极高的输出阻抗以及宽泛的恒流制输出电压范围 (compliance voltage),从 2V 的VVSP 电压至低于 GND 的电压。 可调的 3V~15V 子稳压器 输出能够为额外的电路系统提供电源电压。 XT
[新品]
STC12C5A60S2(ADC查询法 10位模式)+1602显示
通道0接单片机电源,通道1接地线。 源程序:一共3个文件: LCD1602display.h #ifndef _LCD1602DISPLAY_H_ #define _LCD1602DISPLAY_H_ #define uchar unsigned char #define uint unsigned int //************************LCD引脚定义 sbit LCM_RS=P3^5; sbit LCM_RW=P3^6; sbit LCM_E=P3^7; //**************************延时 void delay(); //*********************
[单片机]
STM32中断向量表偏移地址配置方法
以将中断向量表偏移地址改到0x8005000为例 第一种方式: 设置system_stm32f1xx.c文件 #defineVECT_TAB_OFFSET 0x5000 在void SystemInit (void)函数中通过“SCB- VTOR =FLASH_BASE | VECT_TAB_OFFSET”命令实现地址偏移 第二种方式:运用库函数时,可以在main()函数开头,加上 NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x5000);__ASM( CPSIE I ); 命令实现地址偏移 NVIC_VectTab_FLASH 和 FLASH_BASE 都为 0x08000000 要实
[单片机]
【Keil5 C51】AT89C52 做流水灯实验(调用C51的库函数_crol_)
_crol_ 函数的介绍 Cx51 User’s Guide Summary #include intrins.h unsigned char _crol_ ( unsigned char c, /* character to rotate left */ unsigned char b); /* bit positions to rotate */ Description The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrin
[单片机]
51单片机串口向计算机发送字符串C程序
51单片机串口向计算机发送字符串C程序,本布衣实验过的,可以用,串口需有一个232-TTL电平转换 通过串口调试助手可以看到发送字符信息。波特率为9600 #include REGX51.H #include stdio.h //-------------------------------- char *name_month(int n); void Delay(int x); void put(char str); void initUart(void); void putString(unsigned char const *pstr);//const //------------------------------ vo
[单片机]
C51/C52单片机的中断(EXTI)介绍及实现(二)
一、什么是中断 重复说明,CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 简单来说就是:打断当前正在做的事,去执行另外的事,执行完后再回来接着做前面被打断的事,如图所示: 程序中的表现方式: 引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统。 二、51单片机
[单片机]