goodshot

    1. wangerxian 发表于 2022-12-6 10:29 试试吧,一般奇怪的问题都是优化造成的。 调试按道理来说应该和不调试时的现象一样才对。
      选择什么优化呢
    2. damiaa 发表于 2022-12-6 11:42 内存溢出也要注意: 比如数组出界 指针使用问题(指向了没有定义的内存等)等 访问空指针也是不行 ...
      没使用数组
    3. 发一下源代码   #include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;      //对数据类型进行声明定义 typedef unsigned char u8; sbit led=P1^0;         //将单片机的P2.0端口定义为led sbit beep=P2^3;     //蜂鸣器引脚 /******************************************************************************* * 函 数 名         : delay * 函数功能           : 延时函数,i=1时,大约延时10us *******************************************************************************/ void delay(u16 i) {     while(i--);     }   /******************************************************************************* * 函 数 名       : main * 函数功能         : 主函数 * 输    入       : 无 * 输    出         : 无 *******************************************************************************/ void ledFlash() {     int i=3;     while(i--)     {         led=0;         delay(50000); //大约延时450ms         led=1;         delay(50000); //大约延时450ms         }         } /******************************************************************************* * 函数名         :UsartInit() * 函数功能           :设置串口 * 输入           : 无 * 输出              : 无 *******************************************************************************/ void UsartInit() {     SCON=0X50;            //设置为工作方式1     TMOD=0X20;            //设置计数器工作方式2     PCON=0X80;            //波特率加倍     TH1=0XF3;                //计数器初始值设置,注意波特率是4800的     TL1=0XF3;     ES=1;                        //打开接收中断     EA=1;                        //打开总中断     TR1=1;                    //打开计数器 } /******************************************************************************* * 函 数 名       : main * 函数功能         : 主函数 * 输    入       : 无 * 输    出         : 无 *******************************************************************************/ void main() {         UsartInit();  //    串口初始化     while(1);         } /******************************************************************************* * 函数名         : Usart() interrupt 4 * 函数功能          : 串口通信中断函数 * 输入           : 无 * 输出              : 无 *******************************************************************************/ void Usart() interrupt 4 {     u8 receiveData;     if(RI)     {           receiveData=SBUF;//出去接收到的数据              //ledFlash();//放在外面单片机能够指挥外部小灯闪烁                          if(receiveData==0x01)     {         //放在判断句里面,通过keil和STC-ISP的串口仿真,能够单步进入if语句执行ledFlash()实现小灯闪烁         //但是下载到单片机就无法实现小灯闪烁效果了         ledFlash();     }       RI = 0;//清除接收中断标志位     //    SBUF=receiveData;//将接收到的数据放入到发送寄存器 //    while(!TI);             //等待发送数据完成 //    TI=0;                         //清除发送完成标志位        } }
    4. wangerxian 发表于 2022-12-5 17:21 你确定你串口发送的是HEX的0x01,而不是字符串的0x01?
      是keil编译环境的代码优化问题吗
    5. wangerxian 发表于 2022-12-5 17:21 你确定你串口发送的是HEX的0x01,而不是字符串的0x01?
      都试过了

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯积分:19
  • 好友:--
  • 主题:1
  • 回复:5

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言