搜索
bottom↓
回复: 1

iccavr怎么进不了子函数

[复制链接]

出0入0汤圆

发表于 2013-10-7 21:13:26 | 显示全部楼层 |阅读模式
单片机:atmega16   平台: iccavr7  protues
代码1:#include<iom16V.h>       
         #include<macros.h>
       #define uchar unsigned char       
       #define uint unsigned int
uint count;
void Delay_ms(uint xms);
/*********以下是延时函数*********/
void Delay_ms(uint xms)
{
         int i,j;
            for(i=0;i<xms;i++)
         { for(j=0;j<1140;j++){ ; }}
}
/********以下是端口初始化函数********/
void port_init(void)
{
PORTD&=(~(1<<PD4))|(~(1<<PD5));//PD4、PD5输出0
DDRD|=(1<<PD4)|(1<<PD5);  //定时计数器的两个比较匹配输出端口PD4(OC1B)、PD5(OC1A)设置为输出口
}

/*********以下是主函数*********/
void main(void)            
{
    uchar i,j;
        port_init();
       
        while(1)
        {
             PORTD&=~BIT(PD5);
                 Delay_ms(1000);
                // for(i=0;i<1000;i++)
            // for(j=0;j<1140;j++) ;
                 
                 PORTD|=BIT(PD5);
                 Delay_ms(1000);
                 // for(i=0;i<1000;i++)
             // for(j=0;j<1140;j++) ;
               
        }       
}
代码2:
#include<iom16V.h>       
         #include<macros.h>
       #define uchar unsigned char       
       #define uint unsigned int
uint count;
void Delay_ms(uint xms);
/*********以下是延时函数*********/
void Delay_ms(uint xms)
{
         int i,j;
         
            for(i=0;i<xms;i++)
         { for(j=0;j<1140;j++){ ; }}
}
/********以下是端口初始化函数********/
void port_init(void)
{
PORTD&=(~(1<<PD4))|(~(1<<PD5));//PD4、PD5输出0
DDRD|=(1<<PD4)|(1<<PD5);  //定时计数器的两个比较匹配输出端口PD4(OC1B)、PD5(OC1A)设置为输出口
}

/*********以下是主函数*********/
void main(void)            
{
    uchar i,j;
        port_init();
       
        while(1)
        {
             PORTD&=~BIT(PD5);
            // Delay_ms(1000);
                 for(i=0;i<1000;i++)
             for(j=0;j<1140;j++) ;
                 
                 PORTD|=BIT(PD5);
                // Delay_ms(1000);
                  for(i=0;i<1000;i++)
              for(j=0;j<1140;j++) ;
               
        }       
}

为什么代码2能够在protues中闪亮,代码1不得行。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-10-8 11:47:23 | 显示全部楼层
其实,两个延时代码略有不同:
Delay_ms内的i,j是int型
main中的i,j是uchar型
看不到闪烁,极有可能是因为延时太长
楼主可以分别试试Delay_ms(1),Delay_ms(10),Delay_ms(100),
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表