久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1293|回復: 0
打印 上一主題 下一主題
收起左側

C51單片機隊列 方式 中斷接收 查詢發送程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1043726 發表于 2022-9-3 16:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "Queue.h"

  2. volatile unsigned char rx_data;
  3. extern SeqCycleQueue Q;

  4. void Send_Char(u8 ch)
  5. {
  6.     SBUF = ch;
  7.     while(TI == 0);
  8.     TI = 0;
  9. }


  10. //----------------------------------------------
  11. void main (void)
  12. {
  13.     volatile unsigned char tmp = 0;
  14.     TMOD = 0x20;   //T1方式2
  15.     TH1 = 0xFD;    //Baud:9600bps@11.0592MHz
  16.     TL1 = 0xFD;
  17.     TR1 = 1;       //啟動定時器1
  18.    
  19.     SCON = 0x50;   //串口方式1, 8-n-1, 允許接收
  20.     REN = 1;      //使能串口接收
  21.     EA  = 1;      //打開總中斷
  22.     ES  = 1;      //打開串口中斷開關


  23.     Init_Cycle_Queue(&Q);
  24.     while(1)
  25.     {
  26.         if(!Is_Queue_Empty(&Q))
  27.         {
  28.             Delete_Queue(&Q, &tmp);
  29.             Send_Char(tmp);
  30.         }
  31.     }
  32. }
  33. //----------------------------------------------
  34. void serial(void) interrupt 4
  35. {
  36.     if(RI)
  37.     {
  38.         rx_data = SBUF;
  39.         //P1 = rx_data;
  40.         Entry_Queue(&Q, rx_data);
  41.         RI = 0;
  42.     }
  43. }
復制代碼

  1. #include "Queue.h"
  2. SeqCycleQueue Q;

  3. void Init_Cycle_Queue(SeqCycleQueue *Q)
  4. {
  5.         Q->front = 0;
  6.         Q->rear  = 0;
  7. }

  8. bool Entry_Queue(SeqCycleQueue *Q,u8 x)
  9. {
  10.         if((Q->rear+1) % Maxsize == Q->front)
  11.     {
  12.                 return false;
  13.     }
  14.         Q->element[Q->rear] = x;
  15.         Q->rear = (Q->rear+1) % Maxsize;
  16.         return true;
  17. }
  18. bool Delete_Queue(SeqCycleQueue *Q,u8 *x)
  19. {
  20.         if(Q->front == Q->rear)
  21.                 return false;
  22.         *x = Q->element[Q->front];
  23.         Q->front = (Q->front+1) % Maxsize;
  24.         return true;
  25. }

  26. bool Get_front_value(SeqCycleQueue *Q,u8 *x)
  27. {
  28.         if(Q->front == Q->rear)
  29.     {
  30.         return false;
  31.     }
  32.     else
  33.     {
  34.         *x = Q->element[Q->front];
  35.         return true;
  36.     }
  37. }

  38. bool Is_Queue_Full(SeqCycleQueue *Q)
  39. {
  40.     if((Q->rear+1) % Maxsize == Q->front)
  41.         {
  42.         return true;
  43.     }
  44.     else
  45.     {
  46.             return false;
  47.     }
  48. }

  49. bool Is_Queue_Empty(SeqCycleQueue *Q)
  50. {
  51.         if(Q->front == Q->rear)
  52.     {
  53.                 return true;
  54.     }
  55.     else
  56.     {
  57.         return false;
  58.     }
  59. }
復制代碼

  1. #ifndef __QUEUE__
  2. #define __QUEUE__
  3. #include <REGX52.H>
  4. #include "stdbool.h"


  5. #define u8       unsigned char
  6. #define Maxsize 10

  7. typedef struct{
  8.         u8 element[Maxsize];
  9.         u8 front;
  10.         u8 rear;
  11. }SeqCycleQueue;


  12. void Init_Cycle_Queue(SeqCycleQueue *Q);
  13. bool Entry_Queue(SeqCycleQueue *Q,u8 x);
  14. bool Delete_Queue(SeqCycleQueue *Q,u8 *x);
  15. bool Get_front_value(SeqCycleQueue *Q,u8 *x);
  16. bool Is_Queue_Full(SeqCycleQueue *Q);
  17. bool Is_Queue_Empty(SeqCycleQueue *Q);


  18. #endif
復制代碼
  1. #ifndef  __STDBOOL_H__
  2. #define  __STDBOOL_H__

  3. typedef enum{
  4.     false = 0,
  5.     true  = 1,

  6. }bool;


  7. #endif
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品亚洲 | 亚洲中午字幕 | 色综合久久天天综合网 | 91 在线| 日本免费小视频 | 91.com视频 | 免费一区 | 国产一二三区免费视频 | 黄色av观看 | 日韩在线播放中文字幕 | 精品成人免费一区二区在线播放 | 91在线电影| 色一情一乱一伦一区二区三区 | 不卡一区二区在线观看 | 欧美一区二区三区视频在线播放 | 国产精品成人一区二区三区 | 欧美一区二区三区在线观看视频 | 美女国产精品 | 久久精品影视 | 日本又色又爽又黄的大片 | 九热在线| 亚洲一区二区精品视频 | 国产在线观看网站 | 羞羞视频免费在线 | 国产91丝袜在线18 | 日本亚洲精品成人欧美一区 | 人人人干| av中文字幕在线 | 中文字幕日韩欧美 | 第一区在线观看免费国语入口 | 69视频在线播放 | 亚洲高清在线观看 | 欧美成人aaa级毛片在线视频 | 人干人人 | 日本不卡高字幕在线2019 | 日本精品网站 | 国产高清精品一区二区三区 | 成年人视频在线免费观看 | 色偷偷888欧美精品久久久 | 精品啪啪| 久色视频在线 |