C51 中断接收 查询发送

发布者:温柔之风最新更新时间:2017-11-27 来源: eefocus关键字:C51  中断接收  查询发送 手机看文章 扫描二维码
随时随地手机看文章

C51 中断接收 查询发送

  1. #include   

  2.   

  3. volatile unsigned char rx_data;  

  4. volatile bit          rx_flag = 0;  

  5.   

  6. void dalay_1ms(unsigned short n)  

  7. {  

  8.     unsigned short i,j;  

  9.     for(i=0; i

  10.     {  

  11.         for(j=60000; j>0; j--);  

  12.     }  

  13. }  

  14.   

  15.   

  16. void send_char(unsigned char ch)  

  17. {  

  18.     SBUF = ch;  

  19.     while(!TI);  

  20.     TI = 0;  

  21. }  

  22.   

  23. void send_string(unsigned char *str, unsigned char len)  

  24. {  

  25.     unsigned char i;  

  26.     for(i=0; i

  27.     {  

  28.         send_char(*(str+i));  

  29.     }  

  30. }  

  31.   

  32.   

  33. //----------------------------------------------  

  34. void main (void)  

  35. {  

  36. //    volatile unsigned char i,tmp;  

  37.     unsigned char *str = "Serial test";  

  38.     TMOD = 0x20;   //T1方式2  

  39.     TH1 = 0xFD;    //Baud:9600bps@11.0592MHz  

  40.     TL1 = 0xFD;  

  41.     TR1 = 1;       //启动定时器1  

  42.       

  43.     SCON = 0x50;   //串口方式1, 8-n-1, 允许接收  

  44.     REN = 1;      //使能串口接收  

  45.     EA  = 1;      //打开总中断  

  46.     ES  = 1;      //打开串口中断开关  

  47.   

  48.     send_string((unsigned char *)str, 11);  

  49.     while(1)  

  50.     {    

  51.         dalay_1ms(1);  

  52.         if(rx_flag)  

  53.         {  

  54.             ES = 0; //必须得先关串口中断,否则PC收不到数据  

  55.             SBUF = rx_data;  

  56.             while(RI == 0);  

  57.             ES = 1; //再开串口中断  

  58.             RI = 0;  

  59.         }  

  60.     }  

  61. }  

  62. //----------------------------------------------  

  63. void serial(void) interrupt 4  

  64. {  

  65.     rx_data = SBUF;  

  66.     P1 = rx_data;  

  67.     rx_flag = 1;  

  68.     RI = 0;  

  69. }   

  70. //----------------------------------------------  


关键字:C51  中断接收  查询发送 引用地址:C51 中断接收 查询发送

上一篇:C51 队列 方式 中断接收 查询发送
下一篇:常用的电子密码锁源程序精华

推荐阅读最新更新时间:2024-03-16 15:47

STC-C51串口问题
STC11L32XE STC11L48XE STC11L60XE 串口问题 1. 这个3个芯片都有2个串口,(RXD/P1.6、TXD/P1.7)---Port1串口 和 (RXD/P3.0、TXD/3.1)---Port3串口。这个2个串口,不能同时使用,只能分时复用,通过AUXR1来选择,如下图: 2. 在使用STC软件烧写程序的时候,只能使用Port3进行烧写,这是因为在boot烧写程序中把这个串口固定了,只能用这个串口烧写。
[单片机]
STM32CubeMX串口接收中断
才接触到cube,目前只实现了固定长度的接收。配置好后,在while(1)前加入配置接收中断。我也是跟踪代码慢慢找到这句的,目前对于cube的库函数一点都不了解。 if(HAL_UART_Receive_IT(&huart1,usart1_rxBuf,5)!=HAL_OK)Error_Handler(); 打开it.c。找到 void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); /* USER CODE BEG
[单片机]
C51编写菜单的例子
/* Module :Kbdmenu.c Date:------ Usage:P10~P12 use to DownKey,UpKey,CRKey */ #i nclude #i nclude #define SIZE_OF_KEYBD_MENU 20 //菜单长度 uchar KeyFuncIndex=0; //uchar KeyFuncIndexNew=0; void (*KeyFuncPtr)(); //按键功能指针 typedef struct { uchar KeyStateIndex; //当前状态索引号 uchar KeyDnState; //按下 向下 键时转向的状态索引号 uchar KeyUpState; /
[单片机]
Keil C51软件使用详解
第一节 Keil C51编译器的控制指令 C51编译器的控制指令分为三类:源文件控制类,目标文件控制类及列表控制类。 1. 源文件控制类 NOEXTEND:C51源文件不允许使用ANSI C扩展功能。 DEFINE(DF):定义预处理(在C51命令行)。 2. 目标文件(Object)控制类: COMPACT LARGE SMALL 选编译模式 DEBUG(DB) 包含调试信息,以供仿真器或dSCope51使用。 NOAMAKE(NOAM) 禁止AutoMake信息记录 NOREGPARMS 禁止用寄存器传递参数 OBJECTEXTEND(OE) Object文件包含附加变量类型信息 OPTIMIZE(OT) 指
[单片机]
SPI总线单片机发送数据的C51程序
关于spi协议见: http://hi.baidu.com/gilbertjuly/blog/item/0be222eeac9abae5cf1b3e38.html ISD4002芯片资料参考: http://download.csdn.net/source/1208805 以下是单片机spi通信的通用程序,在不同晶振情况下可能需调整延时。这里单片机晶振为11.0592MHz。 _nop_();语句指延迟一个机器周期,约1us左右。写1bit约10us,spi传输率约100kbit/s。 程序中只用了MOSI,/SS,SCLK信号,没有用MISO信号。 #include REGX52.H #include string
[单片机]
SPI总线单片机<font color='red'>发送</font>数据的<font color='red'>C51</font>程序
C51中变量的空间分配几个方法
1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。 2、data区内最好放局部变量。 因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同; 3、确保你的程序中没有未调用的函数。 在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。 4、程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。 在51系列芯片中
[单片机]
非常简单的8×8LED点阵c51源代码
/* 实验目的:学会8*8点阵动态扫描方法. */ /* 实验现象:8*8点阵光柱先从0-9每隔一定的时间动态显示。 */ /*********************************************************************************************/ #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code row ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//
[单片机]
C51单片机功能模块和Keil C 数据类型
单片机特点:集成度高,价格低廉,功能强,速度快,功耗低,体积小,使用灵活,稳定可靠 使用领域:家用电器,智能仪器仪表,通信系统,网络系统,数控机床,数据采集和处理,自动检测,工业控制,火箭制导 51单片机数据类型 数据类型    位(bit)    字节(byte)     取值范围 bit         1      1/8         0-1 signed char     8      1         -128~+127 unsigned char     8       1         0~255 enum        8/16      1or2     -128~+127or-32768~+3
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved