找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

测试Ai8051芯片串口 按键控制只能发送一次

8 小时前 来自 天宁宁 发布 @ 串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16


113097
手上有USB转串口通讯线,还有一块圈圈的51板,上面有232接口
还有8个指示灯,八个按键,于是用八个按键来分别发送8个数据,
同时送P2口显示,烧录好程序调试,发现只能一次按键有效。

  第一次按其中一个按键,会发送对应的数据,P2口指示灯也点亮,
第二次就没有反应了。
程序是根据官方例程修改的.串口发送不是就检测发送结束标志TI么,
然后TI=0.

             void PrintString1(u8 SSF)
              {
               SBUF=SSF;
               while(TI!=1);
               TI=0;   
              }


/*******************************************/
              #include     "..\..\comm\AI8051U.h"
              #include     "stdio.h"
              #include     "intrins.h"
              typedef        unsigned char    u8;
              typedef        unsigned int    u16;
              typedef        unsigned long    u32;
              #define      MAIN_Fosc        11059200L   //定义主时钟(精确计算115200波特率)
//==========================================================================
              #define      Baudrate1 (65536-MAIN_Fosc/9600/4)
              #define      UART1_BUF_LENGTH    128
              u8           TX1_Cnt;    //发送计数
              u8           RX1_Cnt;    //接收计数
              bit          B_TX1_Busy; //发送忙标志
              u8           RX1_Buffer; //接收缓冲
/*************  本地函数声明    **************/
              void         UART1_config(u8 brt);   // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
/****************  外部函数声明和外部变量声明 *****************/
              sbit         OutPut0=P2^0;                   //
              sbit         OutPut1=P2^1;                   //
              sbit         OutPut2=P2^2;                   //
              sbit         OutPut3=P2^3;                   //
              sbit         InttPut0=P1^0;                  //
              sbit         InttPut1=P1^1;                  //
              sbit         InttPut2=P1^2;                  //
              sbit         InttPut3=P1^3;                  //
              sbit         InttPut4=P1^4;                  //
              sbit         InttPut5=P1^5;                  //
              sbit         InttPut6=P1^6;                  //
              sbit         InttPut7=P1^7;                  //
              u8           kcounter,kstatus;               //按键计数标志 按键状态标志
/****************按键计数器状态寄存器归零*************/
              void RstKey()
              {
              kcounter=0;                        //按键计数器归零
              kstatus=0;                         //状态寄存器归零
              }
/*****************按键低电平检测函数*****************/
              void   LowVoltKey(void)            //按键计数器状态标志加一
              {
              kcounter++;                       
              kstatus++;     
              _nop_();                           //延时                  
              }
/*****************按键高电平检测函数*****************/
              void    HighVoltKey(void)          //按键计数器加一 状态标志归零
              {
              kcounter++;                        //按键计数器加一
              kstatus=0;                         //按键状态标志归零
              _nop_();                           //延时
              }
/*****************延时*****************/
              void Delay100ms(u16 x)              //
              {
              u16 i,j;
              for(i=0;i<x;i++)
              for(j=0;j<11000;j++);
              }
//========================================================================
// 函数: void PrintString1(u8 *puts)
// 描述: 串口1发送字符串函数。
// 参数: SSF
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注:
//========================================================================
              void PrintString1(u8 SSF)
              {
               SBUF=SSF;
               while(TI!=1);
               TI=0;   
              }
//========================================================================
// 函数: SetTimer2Baudraye(u32 dat)
// 描述: 设置Timer2做波特率发生器。
// 参数: dat: Timer2的重装值.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注:
//====

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-28 14:45 , Processed in 0.095317 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部