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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2007|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国模一区二区三区欧美 | 精品乱人伦一区二区三区 | 天天草夜夜骑 | 中文字幕av一区 | 久久久综合网 | 在线三级电影 | 一区二区日本 | 国产一级在线 | 看片一区 | 一区二区三区回区在观看免费视频 | 九九国产 | 精品国产第一区二区三区 | 一二区成人影院电影网 | 中文字幕中文字幕 | 亚洲三区在线 | 日韩精品一区二区三区中文字幕 | 欧美日韩三级 | 久久天堂| 国产精品精品视频一区二区三区 | 免费色网址 | 天天操欧美 | 91欧美| 国产69精品久久99不卡免费版 | 成人免费视频 | 亚洲一区二区电影网 | 成人免费视频网站在线观看 | 亚洲久久在线 | 国产一区二区黑人欧美xxxx | 国产传媒视频在线观看 | 在线播放中文字幕 | 2022国产精品| 精品一区二区三区四区在线 | 精品久久香蕉国产线看观看亚洲 | 成人久久| 欧美一级视频免费看 | 亚州成人| 午夜网站视频 | 夜夜骑av| 国产乱码久久久久久一区二区 | 日韩精品在线一区二区 | 亚洲精品视频三区 |