打印

请教:这句for语句为什么不执行?

[复制链接]
2636|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fxhfxh|  楼主 | 2012-7-31 13:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的pic16f1828,MPLAB IDE v8.85

#define       led     LATB5
main()
{ uchar k;
PortInit();
while(1)
{
   // led=1;while(1);  //led 要亮
   for(k=4;k==0;k--) led=1;   //这样就不亮?

以前搞51,现在用pic ,这句为什么不执行,特请教知道的朋友,谢谢先。
沙发
longjun3121| | 2012-7-31 14:16 | 只看该作者
for(k=4;k==0;k--)
应该是k>0;吧,要不然不会运行k--的啊!

使用特权

评论回复
板凳
hankchen86| | 2012-7-31 21:01 | 只看该作者
不满足进入for循环的条件,同二楼。

使用特权

评论回复
地板
Ryanhsiung| | 2012-8-1 08:56 | 只看该作者
。。。。
  LZ,复习一下C的基础吧

使用特权

评论回复
5
fxhfxh|  楼主 | 2012-8-1 17:40 | 只看该作者
知道了,不具备循环条件。谢谢楼上各位。

使用特权

评论回复
6
yewuyi| | 2012-8-2 08:42 | 只看该作者
彻底晕倒:for(k=4;k==0;k--)



老实交代,是不是大学讲C语言的时候去泡马子了?

使用特权

评论回复
7
szxy06dq| | 2012-8-2 09:15 | 只看该作者
6# yewuyi
哈哈,估计是没干好事

使用特权

评论回复
8
nelsonfung| | 2012-8-2 09:46 | 只看该作者
7# szxy06dq LZ大意了

使用特权

评论回复
9
fxhfxh|  楼主 | 2012-8-6 12:10 | 只看该作者
谢谢楼上各位,1确实是大意了,2当时也比较慌忙,3c语言我是自学的(看了一下视频)。呵呵,错误了还有这么多理由。再一次谢谢各位。:'(

使用特权

评论回复
10
fxhfxh|  楼主 | 2012-8-6 12:16 | 只看该作者
彻底晕倒:for(k=4;k==0;k--)



老实交代,是不是大学讲C语言的时候去泡马子了?
yewuyi 发表于 2012-8-2 08:42

如果能有时间在大学里听老师讲授C语言,那我就是天下最幸福的人了。羡慕嫉妒恨。呵呵。天下真有太多的不平了。。。。。。

使用特权

评论回复
11
fxhfxh|  楼主 | 2012-8-7 09:50 | 只看该作者
因为需要,搞了一个单片机模拟2262发码的小程序,贴上来,供需要的朋友品头评足多提建设性意见,以便进一步改进和完善,
/*************PIC12F629单片机程序******************************/
/**************************************************************/
/*****File  Function : 模拟2262发码                           *****/
/*****Program Author :                                    *****/
/*****MCU            : PIC12F629  内部4M晶振             *****/
/*****Compile Date   :  2012/08/03                        *****/
/*****Edition Info   :  V0.0                              *****/
//*************************************************************/
/*************************************************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int

void delay5ms(void);
void delay200us(void);
void delayms(uint count);
void delay0d5s(void);

void PortInit(void);
//-------------------------------------------
void p2262_0(void);
void p2262_1(void);
void p2262_f(void);
void fs_2262(uint add,uchar dat);

#define       p2262   GPIO4   //3脚,接5.6K到433发射模块,同时接4.7K电阻到发光2极管正极,发光管负极到地20120805
//#define     led     GPIO5   //2脚 4.7k,负极到地

#define                _asm{"nop"}        NOP()
#define                _asm{"clrwdt"}        CLRWDT()
#define                _asm{"sleep"}        SLEEP()
//__CONFIG(HS&PROTECT&WDTEIS);    //采用内部RC振荡器,看门狗关闭
//=============================================================
//=============================================================
void PortInit(void)
{
        TRISIO=0b00000000;   //设置GP4,GP5为输出
//        CMCON=0b00000000;
        WPU =0b11111111;         //使能口上拉电阻
        OPTION_REG=0b00001111;    //后3位调整睡眠时间
}
//=============================================================
//=============================================================
void main(void){       
        uint k,j;       
        uchar i;
//--------------------------------------------------       
        //void main(void){     //试验程序
        //        PortInit();
        //while(1){        
        //delayms(1500);
    //   led=1;
        //delayms(8500);
        //        led=0;
        //delayms(8400);     
    //        }}
//--------------------------------------------------
        PortInit();
        p2262=0;
        while(1){
//  for(i=0;i<2;i++)delay0d5s();
//         CLRWDT();
//  delay0d5s();
//        led=0;      //发光管亮       
          //for(k=0;k<16;k++){
        fs_2262(0xaaaa,15);    //   
          //for(j=0;j<35535;j++)
          //;
      //}
//        led=1;        //发光管熄灭
   SLEEP();
   NOP();
        }
}
//============================================================
void delayms(uint count){
uint i;
for(i=count;i>0;i--){
NOP();
CLRWDT();                                                          //315只用这一句
NOP();NOP();NOP();NOP();NOP();NOP();  //315也可用这一句,433也可用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433要用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433要用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433要用此句
NOP();NOP();NOP();NOP();NOP();NOP();  //433必须用此句
}}

void delay5ms(void){
        uchar i;
        for(i=24;i>0;i--){
         delay200us();
        }}

void delay200us(void){
        uchar i;
        for(i=50;i>0;i--)
        NOP();       
    }

void delay0d5s(void){
        uint i;
        for(i=1500;i>0;i--){
         delay200us();
        }}
//=============================================================
/**************************************************************/
/*############################################################*/
//-------------------------------------------------------------
void p2262_0(void){
        p2262=1;
        delayms(10);
        p2262=0;
        delayms(30);
        p2262=1;
        delayms(10);
        p2262=0;
        delayms(30);
}
//-------------------------------------------------------------
void p2262_1(void){
        p2262=1;
        delayms(30);
        p2262=0;
        delayms(10);
        p2262=1;
        delayms(30);
        p2262=0;
        delayms(10);
}
//-------------------------------------------------------------
void p2262_f(void){                 
        p2262=1;
        delayms(10);
        p2262=0;
        delayms(30);
        p2262=1;
        delayms(30);
        p2262=0;
        delayms(10);
}
//-------------------------------------------------------------
void fs_2262(uint add,uchar dat){    //2262编码发射,00代表0,01代表1,10代表f
        uchar i,j;        
        uint temp;            //暂存地址单元       
   
        for(i=0;i<8;i++){     //发射相同的8组码 //发射相同的4组码?//发射相同的2组码  ?????
          
                for(j=0;j<8;j++){        //先发射8位地址
                temp=add;
                temp>>=((7-j)*2);        //将待发射的两位移到最低位
                temp &=3;

                if(temp==0)      p2262_0();
                else if (temp==1)p2262_1();
                else if (temp==2)p2262_f();
                }

                for(j=0;j<4;j++){        //再发4位数据
                temp=dat;
                temp>>=(3-j);
                temp &=1;
                if(temp==0)p2262_0();
                else if(temp==1)p2262_1();
                }       

//        led=0;      //发光管亮
        p2262=1;    //发射结束码
        delayms(10);

        p2262=0;
        delayms(310);
        }
//        led=0;      //发光管亮       
}
//###########################################################*/

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

382

帖子

1

粉丝