关于C51仿真遇到的运行问题,在编译时不能逐句运行

[复制链接]
2339|5
 楼主| redliu 发表于 2010-10-26 10:42 | 显示全部楼层 |阅读模式
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <math.h>
#include <absacc.h>
#include <string.h>
sbit OUT=P0^4;                                  //输出口p0.4
#define uchar unsigned char
#define uint unsigned int
unsigned int bili;
//void Delay1Ms(uint n);    //延时t*1毫秒
void Hdelay1ms(void)
{
TMOD &= 0xF0;
TMOD |=0x01;
    TH0 = 0xFC;
    TL0 = 0x18;
TF0=0;//清除定时器溢出标志
    TR0 = 1;//启动定时器
while(TF0==0);//等待计数完成
TR0=0;//停止定时器
}
void Delay1Ms(uint n)
{
  unsigned int j;
for(j=n;j>0;j--)
Hdelay1ms();
}
void morse(unsigned char str,unsigned int speed)
{
        bili=3;
        if(str==0x00)
  {
            OUT=1;
            Delay1Ms(speed);
            OUT=0;
            Delay1Ms(speed*bili);
        }
  if(str==0x01)
  {
   OUT=1;
            Delay1Ms(speed);
            OUT=0;
            Delay1Ms(speed);
            OUT=1;
            Delay1Ms(speed);
            OUT=0;
            Delay1Ms(speed);
   }
  if(str==0x02)
   {
            OUT=1;
            Delay1Ms(speed);
            OUT=0;
            Delay1Ms(speed);
            OUT=1;
            Delay1Ms(speed);
            OUT=0;
            Delay1Ms(speed);
            OUT=1;
            Delay1Ms(speed*bili);
            OUT=0;
            Delay1Ms(speed*bili);
  }
      
}
void main(void)
{
bili=3;
morse(0x01,200);
OUT=1;
    Delay1Ms(100);
    OUT=0;
    Delay1Ms(100);
}
ayb_ice 发表于 2010-10-26 11:07 | 显示全部楼层
"编译时运行程序"
雷人的语句啊
 楼主| redliu 发表于 2010-10-26 11:15 | 显示全部楼层
呵呵!写得比较急,没有仔细看标题,在编译的时候,有些语句编译器认为是注释。
ayb_ice 发表于 2010-10-26 11:39 | 显示全部楼层
LS
那是编译器自动优化了
 楼主| redliu 发表于 2010-10-26 11:40 | 显示全部楼层
4楼有解决的办法吗?
ayb_ice 发表于 2010-10-26 11:45 | 显示全部楼层
这根本就不是问题,
解决什么
换句说,编译器比我们聪明
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部