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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2068|回復: 5
收起左側

串口屏控制STC8H1K28點燈功能無法實現 單片機代碼如下

[復制鏈接]
ID:1079614 發表于 2023-5-24 16:17 | 顯示全部樓層 |閱讀模式
  1. #include <STC8H.H>

  2. #include "intrins.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit led=P2^3;

  6. unsigned char a[4];
  7. uchar UART1_TXD_FLAG,UART_RXD,UART_CONTER,UART_KEY_FLAG;


  8. void UartInit()//57600bps 11.0592MHZ
  9. {
  10.         P_SW1=0x00;
  11.         
  12.         SCON=0x50;
  13.         AUXR |= 0x01;                //串口1選擇定時器2為波特率發生器
  14.         AUXR |= 0x04;                //定時器時鐘1T模式
  15.         T2L = 0xD0;                //設置定時初始值
  16.         T2H = 0xFF;                //設置定時初始值
  17.         AUXR |= 0x10;                //定時器2開始計時
  18. }
  19. void UART1_SEND_BYTE(unsigned char dat)
  20. {
  21.         UART1_TXD_FLAG=1;
  22.         SBUF=dat;
  23.         while(UART1_TXD_FLAG == 1);
  24. }
  25. void KEY_LCD()
  26. {
  27.         uchar KEY_FLAG,i;
  28.         if(a[0]==0xAA)
  29.         {
  30.                 if(a[2]==0xcc&&a[3]==0x33)
  31.                 {
  32.                         if(UART_KEY_FLAG==1)
  33.                         {
  34.                                 UART_KEY_FLAG=0;
  35.                                 KEY_FLAG=1;
  36.                         }
  37.                 }
  38.         }
  39.         if(KEY_FLAG==1)
  40.         {
  41.                         if(a[1]==0x00)
  42.                         {
  43.                                 led=0;
  44.                         }
  45.                         if(a[1]==0x01)
  46.                         {
  47.                                 led=1;
  48.                         }
  49.         }

  50.                 KEY_FLAG=0;                                                                           
  51.                 for(i=0; i<8; i++) a[i]=0x00;                                      

  52. }
  53. void main()
  54. {
  55.     P0M0 = 0x00;
  56.     P0M1 = 0x00;
  57.     P1M0 = 0x00;
  58.     P1M1 = 0x00;
  59.     P2M0 = 0x00;
  60.     P2M1 = 0x00;
  61.     P3M0 = 0xff;
  62.     P3M1 = 0x00;
  63.     P4M0 = 0x00;
  64.     P4M1 = 0x00;
  65.     P5M0 = 0x00;
  66.     P5M1 = 0x00;

  67.     UartInit();
  68.     ES = 1;
  69.     EA = 1;
  70.                 led=0;
  71.     while (1)
  72.     {
  73.              KEY_LCD();
  74.     }
  75. }

  76. void UART1_()interrupt 4
  77. {
  78.         if(RI)
  79.         {
  80.                 RI=0;
  81.                 if(UART_RXD==0)
  82.                 {
  83.                         if(SBUF==0xAA)
  84.                         {        
  85.                                 UART_RXD=1;
  86.                                 UART_CONTER=0;
  87.                         }
  88.                 }
  89.                         if(UART_RXD == 1)
  90.                 {
  91.                         a[UART_CONTER]=SBUF;
  92.                         UART_CONTER++;
  93.                         if(UART_CONTER==4)
  94.                         {        
  95.                                 UART_RXD=0;
  96.                                 UART_CONTER=0;
  97.                                 UART_KEY_FLAG=1;
  98.                         }
  99.                 }
  100.         }
  101.         if(TI)
  102.         {
  103.                 TI=0;
  104.                 UART1_TXD_FLAG=0;
  105.         }
  106. }
復制代碼

串口屏連電腦能接收到數據

串口屏連電腦能接收到數據
回復

使用道具 舉報

ID:1079614 發表于 2023-5-24 16:21 | 顯示全部樓層
功能無法實現,求大神幫我看看哪里有問題
回復

使用道具 舉報

ID:213173 發表于 2023-5-24 17:32 | 顯示全部樓層
A-set 發表于 2023-5-24 16:21
功能無法實現,求大神幫我看看哪里有問題

你確定是用串口屏控制單片機?
回復

使用道具 舉報

ID:1079614 發表于 2023-5-25 08:44 | 顯示全部樓層
wulin 發表于 2023-5-24 17:32
你確定是用串口屏控制單片機?

是的 串口屏連電腦確定能發出數據 但是連單片機單片機沒得動作
回復

使用道具 舉報

ID:624769 發表于 2023-5-25 17:30 | 顯示全部樓層
  • {
  •     if(RI)
  •     {
  •         RI=0;
  •         if(SBUF==0xAA)   UART_CONTER=0;
  •         a[UART_CONTER]=SBUF;
  •         if(++UART_CONTER>=4)
  •         {
  •             UART_CONTER=0;
  •             UART_KEY_FLAG=1;
  •         }
  •     }
  •     if(TI)
  •     {
  •         TI = 0;
  •         UART1_TXD_FLAG=0;
  •     }
  • }

回復

使用道具 舉報

ID:213173 發表于 2023-5-25 21:00 | 顯示全部樓層
A-set 發表于 2023-5-25 08:44
是的 串口屏連電腦確定能發出數據 但是連單片機單片機沒得動作

先把程序減化一下,用實物STC8G1K08-16測試 led改到P1^3; 用串口助手交替發0xaa 0x00 0xcc 0x33和0xaa 0x01 0xcc 0x33 ,led交替亮滅,功能正常。
  1. #include <STC8H.H>
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit led=P2^3;

  6. uchar a[4];
  7. bit flag;

  8. void UartInit()                //57600bps@11.0592MHz
  9. {
  10.         SCON = 0x50;                //8位數據,可變波特率
  11.         AUXR |= 0x01;                //串口1選擇定時器2為波特率發生器
  12.         AUXR |= 0x04;                //定時器時鐘1T模式
  13.         T2L = 0xD0;                        //設置定時初始值
  14.         T2H = 0xFF;                        //設置定時初始值
  15.         AUXR |= 0x10;                //定時器2開始計時
  16.         EA = 1;                                //開總中斷
  17.         ES = 1;                                //開串口中斷
  18. }

  19. void KEY_LCD()
  20. {
  21.         uchar i;
  22.         if(flag)
  23.         {
  24.                 flag=0;
  25.                 if(a[2]==0xcc && a[3]==0x33)
  26.                 {
  27.                         if(a[1]==0x00)
  28.                         {
  29.                                 led=0;
  30.                         }
  31.                         if(a[1]==0x01)
  32.                         {
  33.                                 led=1;
  34.                         }
  35.                 }
  36.                 for(i=0; i<4; i++)
  37.                         a[i]=0x00;//清除緩存
  38.         }
  39. }

  40. void main()
  41. {
  42.         P0M0 = 0x00;
  43.         P0M1 = 0x00;
  44.         P1M0 = 0x00;
  45.         P1M1 = 0x00;
  46.         P2M0 = 0x00;
  47.         P2M1 = 0x00;
  48.         P3M0 = 0x00;
  49.         P3M1 = 0x00;
  50.         P4M0 = 0x00;
  51.         P4M1 = 0x00;
  52.         P5M0 = 0x00;
  53.         P5M1 = 0x00;
  54.        
  55.         UartInit();
  56.         led=0;
  57.         while (1)
  58.         {
  59.                 KEY_LCD();
  60.         }
  61. }
  62.        
  63. void UART1_()interrupt 4
  64. {//0xaa 0x0? 0xcc 0x33
  65.         static uchar i=0;        //靜態計數變量
  66.         RI=0;                                        //接收中斷請求標志位清0
  67.         a[i]=SBUF;                        //接收到的數據串保存在緩存數組
  68.         if(a[0]==0xAA)                //驗證數據頭,否則自動被覆蓋
  69.         {
  70.                 i++;
  71.                 if(i>=4)
  72.                 {
  73.                         flag=1;                //接收完成標志置1
  74.                         i=0;                        //計數變量清0
  75.                 }
  76.         }
  77. }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区黄 | 91精品久久久久久久 | 天天天久久久 | 日韩一区二区在线播放 | 欧区一欧区二欧区三免费 | 日韩欧美在线观看一区 | 男人天堂手机在线视频 | 国产激情在线 | 一级黄在线观看 | 欧美精品中文 | 在线日韩欧美 | 亚洲欧美日韩国产综合 | 国产精品96久久久久久 | 国产91在线观看 | 亚洲精品综合 | 久久久久久亚洲精品不卡 | 中文av电影 | 亚洲成人一区二区 | 天天综合网91 | 国产精品大全 | 91av免费版| 精品视频国产 | 精精国产xxxx视频在线播放 | 国产精品一区在线观看 | 国产精品毛片一区二区三区 | 亚洲免费在线观看视频 | 日韩免费在线 | 日日夜夜精品视频 | 精品成人在线观看 | 91精品国产91综合久久蜜臀 | aaaa一级毛片 | 国产乱码精品一区二区三区中文 | 99精品国产一区二区三区 | 一级黄a | 国产日韩在线观看一区 | 美女福利视频一区 | 国产日韩精品一区 | 99久久婷婷国产综合精品 | 日韩一区二区三区在线视频 | 亚洲欧美久久 | 国产精品久久久久久久久久久免费看 |