搜索
bottom↓
回复: 4

一个按键的程序,帮我看看。。。。谢谢了

[复制链接]

出0入0汤圆

发表于 2009-8-6 23:35:30 | 显示全部楼层 |阅读模式
我按照马老师的半状态机方法写一个按键的程序,可是ICCAVR编译说“cannot initialize ram area" ,不知怎么回事?各位大侠能不能帮我看看?我看过很多遍了,还是不明白哪里出错了。

#include<iom16v.h>
#include<macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
#define state_0  0
#define state_1  1
#define state_2  2

uchar key_10ms_on,j,ime[3];
#pragma interrupt_handler xianshi:20
void xianshi()  //2ms定时 ctc
{                            
           if(j++==5)
           {
               j=0;
                   key_10ms_on=1;
           }
            
uchar read_key()
{
      uchar key_temp,key_return=0;
          static uchar key_state=0;
          key_temp=PINC;
          switch (key_state)
          {
              case (state_0):
                      if(!key_temp)key_state=state_1;
                       break;
                  case (state_1):
                       if(!key_temp)                  
                              {
                               key_state=state_2;
                                  }
                           else  key_state=state_0;
                           break;
                  case (state_2):
                       if(key_temp) key_state=state_0;
                           key_return=1;
          }
          return key_return;

}

void main()
{

       while(1)
         {
                  CLI();
                  TCCR0 = 0x00;
                  OCR0  = 0x7c;
                  TCCR0 = 0x0b; //start timer
          
                    MCUCR = 0x00;
                 GICR  = 0x00;
                  TIMSK = 0x02; //timer interrupt sources
                 SEI();
                 DDRC=0;//按键连接的C口设为输入
                  time[0]=12,time[1]=23,time[2]=35;
                  if(key_10ms_on)
                        {   
                                    key_10ms_on=0;
                                    
                                         if(read_key())
                                          {
                                                     if(++time[1]>=59)    //这里本来是按键修正分钟的。。
                                                     {
                                                       time[1]=0;
                                                           time[0]++;
                                                     }
                                          }
                                          
                        }

}

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-8-7 00:20:33 | 显示全部楼层
参考http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3503456&bbs_id=9999

出0入0汤圆

 楼主| 发表于 2009-8-8 08:37:17 | 显示全部楼层
是因为ICCAVR不支持STATIC这种关键字。。。。。。

出0入0汤圆

发表于 2009-8-9 00:46:05 | 显示全部楼层
不会吧,ICCAVR比CVAVR更同标准C兼容。你用小写的试试。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-15 15:50

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

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