怪事,这程序不正常终止

[复制链接]
2342|4
 楼主| t-z-sh 发表于 2007-12-21 11:19 | 显示全部楼层 |阅读模式
se, FOR, IO, dc, IDC
下面的程序当运行到最下面的“SET_MAX7032_CS();”后不会停止而是跳到第一个for循环。当把两个for循环分别用i和j做计数后正常!为什么?
--------------------------------
#include "SM89516AC.h"
#define CS P3_4
#define DIO P3_5
#define SCLK P3_7


void CLR_MAX7032_CLK(void)
  {    SCLK=0;}
void SET_MAX7032_CLK(void)
  {SCLK=1;}
void CLR_MAX7032_DAT(void)
  {    DIO=0;}
void SET_MAX7032_DAT(void)
  {DIO=1;}
void CLR_MAX7032_CS(void)
  {    CS=0;}
void SET_MAX7032_CS(void)
  {CS=1;}
void Max7032Write(char addr,char dat)
    {
  char i;
CLR_MAX7032_CS();
  for(i=0;i<8;i++)
        {
        CLR_MAX7032_CLK();
        if(addr&0x80)SET_MAX7032_DAT();
        else CLR_MAX7032_DAT();
         SET_MAX7032_CLK();
         addr<<=1;
        }

  for(i=0;i<8;i++)
        {
        CLR_MAX7032_CLK();
        if(dat&0x80)SET_MAX7032_DAT();
        else CLR_MAX7032_DAT();
         SET_MAX7032_CLK();
         dat<<=1;
        }
CLR_MAX7032_CLK();
SET_MAX7032_CS();
     }

main()
{

  Max7032Write(0x40,0xBA);

}
huntington 发表于 2007-12-21 11:42 | 显示全部楼层

正常的单片机程序都是个大循环~~~~~~~

sharks 发表于 2007-12-21 12:03 | 显示全部楼层

main不正常

  结束后程序去了哪里?

  如果你只是调试,在main最后加一句while(1);
 楼主| t-z-sh 发表于 2007-12-21 13:55 | 显示全部楼层

但为什么把两个for语句用不同变量递加就不会那么循环呢?

sharks 发表于 2007-12-22 21:49 | 显示全部楼层

C语言优化,会自动删去某些语句。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

48

帖子

0

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