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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請教通過串口發送單片機I/O口狀態程序

[復制鏈接]
回帖獎勵 50 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:394056 發表于 2018-10-15 10:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 代碼蝦1 于 2018-10-15 10:25 編輯

通過P1.0口檢測高低電平,并通過串口發送P1.0口的狀態顯示在串口助手上。下面是我寫的程序,但是通過串口收不到數據。還請大佬們指教啊,快被這個程序搞瘋了。請給出具體的程序謝謝
#include "stc12c5a60s2.h"
#include "delay.h"
#include "uart.h"
sbit relay=P3^1;
sbit   HighLow=P1^0;
sbit   status=P1^1;   
void main()
{
  InitUart();
  while(1)
{
  if(HighLow==0)
    {
  relay=1;
  }
  else if(HighLow==1)
  {
   relay=0;
  }
   send_uart1(HighLow);
}     
}
下面是子程序
#include "uart.h"
#include "stc12c5a60s2.h"

void InitUart()  
{

SCON=0X50;
PCON |= 0x80;  
S2CON = 0x50;  
AUXR |= 0x08;  
AUXR |= 0x04;  
AUXR|=0X11;  
BRT = 0xb8;  
EA =1;      
    ES =1;      
IE2 =0x01;      
TI=1;
RI=0;
}
void send_uart1(uchar ck1)
{
SBUF=ck1;
while(TI==0);
TI=0;

}
void send_uart2(uchar ck1)
{
S2BUF =ck1;
    while(!(S2CON&S2TI));
    S2CON&=~S2TI;         
}
void UartPrintASCII(unsigned char c)   
{
    TI=0;   
    SBUF=c;   
    while(TI==0);   
    TI=0;   
}
void UartPrintf(unsigned char *p)   
{
  while(*p)
  {
   SBUF=*(p++);
  while(TI==0)
  {
   ;
   ;
   ;
  };
  TI=0;
}   
}

void Uart2PrintASCII(unsigned char c)   
{
    S2BUF=c;   
    while(!(S2CON&S2TI));  
S2CON&=~S2TI;         
}
void Uart2Printf(unsigned char *p)   
{
  while(*p)
  {
   S2BUF=*(p++);
  while(!(S2CON&S2TI));  
     S2CON&=~S2TI;         
}   
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:387733 發表于 2018-10-15 16:41 | 只看該作者
主頻多少?串口波特率多少?
回復

使用道具 舉報

板凳
ID:394056 發表于 2018-10-17 22:13 | 只看該作者
帖子沉了完了
回復

使用道具 舉報

地板
ID:213173 發表于 2018-10-18 14:06 | 只看該作者
本帖最后由 wulin 于 2018-10-19 15:48 編輯

樓主提出問題含糊不清。不知你的程序是從哪里抄來的,根據頭文件是使用的STC12C5A60S2,看串口初始化程序是使用的串口2。串口2的數據緩沖寄存器應該是S2BUF并且使用獨立波特率發生器。由于你只發不收,不必開串口中斷。給你寫了示例程序,Keil 調試通過,未經實物驗證。
#include <STC12C5A60S2.H>        
//sbit relay=P3^1;
sbit HighLow=P1^0;
//sbit status=P1^1;   
bit  a;

void UartInit(void)                //9600bps@11.0592MHz
{
        AUXR &= 0xF7;                //波特率不倍速
        S2CON = 0x50;                //8位數據,可變波特率
        AUXR &= 0xFB;                //獨立波特率發生器時鐘為Fosc/12,即12T
        BRT = 0xFD;                        //設定獨立波特率發生器重裝值
        AUXR |= 0x10;                //啟動獨立波特率發生器
}
void send_uart1(unsigned char ck1)
{
        S2BUF=ck1;
        while(S2TI==0);
        S2TI=0;
}
void main()
{
        UartInit();
        HighLow=1;
        a=HighLow;
        while(1)
        {
                if(HighLow^a)//只在P1.0電平變化時發送數據
                {
                        a=~a;
                        send_uart1(HighLow);
                }
        }     
}
回復

使用道具 舉報

5#
ID:411973 發表于 2018-10-18 21:40 | 只看該作者
這個還是要具體問題具體分析的
回復

使用道具 舉報

6#
ID:409210 發表于 2018-10-19 15:34 | 只看該作者
串口率事多少呢?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费av一区二区三区 | 精品国产免费一区二区三区五区 | 九九视频在线观看 | 亚洲高清一区二区三区 | 国产精品一区二区日韩 | 午夜成人在线视频 | 日本a∨精品中文字幕在线 亚洲91视频 | 视频1区 | av色噜噜| 亚洲成人精品在线 | 国产精品日韩 | 久在线视频播放免费视频 | 日韩一区二区在线观看 | 麻豆精品国产91久久久久久 | 国产在线一区二 | 久久99精品视频 | 精品免费国产一区二区三区 | 美国一级片在线观看 | 欧美视频成人 | 一色桃子av一区二区 | 欧美在线精品一区 | 97国产一区二区 | 国产精品一区二区三区99 | 日本一区视频在线观看 | 国产精品一区二区精品 | 99热99 | 亚洲成人网在线 | 午夜影院在线免费观看视频 | 成人福利在线观看 | 精品国产欧美一区二区三区不卡 | 精品欧美激情在线观看 | 久久久久久影院 | 日本一区二区三区在线观看 | 精品一区二区三区在线观看 | 国产精品九九九 | 国产精品久久久久久福利一牛影视 | 免费国产一区二区视频 | 国产福利资源在线 | 一级片毛片 | 一区二区三区国产 | 亚洲第一av |