久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3515|回復: 2
打印 上一主題 下一主題
收起左側

avr ATMega32驅動aw9523b 讓led顯示,adc數據讓led依次亮起,為什么程序跑不起來

[復制鏈接]
跳轉到指定樓層
樓主
ID:370192 發表于 2018-7-12 14:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
代碼如下,各位大神請指教

#include <iom32v.h>
#include <macros.h>
#define uchar unsigned char
#define uint  unsigned int
#define WD_DEVIC_ADDR 0xb6
#define RD_DEVIC_ADDR 0xb7            
#define SLA_AW1 0X02
#define SLA_AW2 0X03      
#define MT_SLA_ACK 0x18      
#define MT_SLA_NOACK 0x20
#define MT_DATA_ACK 0x28   
#define MT_DATA_NOACK 0x38
#define START 0x08
#define RE_START 0x10
#define MR_SLA_ACK 0x40
#define MR_SLA_NOACK 0x48
#define MR_DATA_ACK 0x50
#define MR_DATA_NOACK 0x58      
#define DATA1 0x79
#define DATA2 0xd5
#define DATA3 0xb6
#define DATA4 0xea
#define DATA5 0x2c
#define DATA6 0xc0

#define WD_DEVICE_FW  0x7f    //aw9523 軟復位寄存器地址
#define WD_DEVICE_DG  0x11    //aw9523 燈光電流控制寄存器地址
#define Start()    TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
#define Wait()     while (!(TWCR & (1<<TWINT)));
#define Stop()     TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
#define TestAck()  (TWSR&=0xf8)
#define SetAck()   (TWCR|=(1<<TWEN)
#define SetNoack()  (TWCR&=~(1<<TWEN))
#define Twi()    (TWCR=(1<<TWINT)|(1<<TWEN));
#define Write8Bit(x)  {TWDR=(x); TWCR=(1<<TWINT)|(1<<TWEN);}
const a[] = {0xef,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,
        0xbf,0xbf,0xb7,0xb3,0xb1,0x00};
const b[] = {0xfb,0xfb,0x3b,0x1b,0x0b,0x03,0x01,
        0x00,0x00,0x00,0x00,0x00,0x00};
              
                //燈依次亮起數據
void twi_init(void)
{
TWBR=0x20;
TWCR=0x04;
TWSR=0;
}
uchar IIC_Write(uchar addr,uchar wdata,uchar addr2,uchar wdata2)
{
Start();
Wait();
if(TestAck()!=START)
  return 1;
Write8Bit(WD_DEVIC_ADDR);
Wait();
if(TestAck()!=MT_SLA_ACK)
    return 1;
Write8Bit(addr);
Wait();
if(TestAck()!=MT_DATA_ACK)
    return 1;

Write8Bit(wdata);
Wait();
if (TestAck()!=MT_DATA_ACK)
    return 1;

Write8Bit(addr2);
Wait();
if(TestAck()!=MT_DATA_ACK)
    return 1;
Write8Bit(wdata2);
Wait();
if (TestAck()!=MT_DATA_ACK)
    return 1;
Stop();
return 0;

}
uchar IIC_read(uchar addr)
{
uchar temp1;
Start();
Wait();
if(TestAck()!=START)
  return 1;
Write8Bit(WD_DEVIC_ADDR);
Wait();
if(TestAck()!=MR_SLA_ACK)
    return 1;  

Write8Bit(addr);
Wait();
if(TestAck()!=MR_SLA_ACK)
  return 1;

Twi();
Wait();
if(TestAck()!=MR_DATA_NOACK)
    return 1;
temp1=TWDR;
Stop();
return temp1;

}
void delay(uint ms)
{
    uint i,j;
for(i=0;i<ms;i++)
   {
    for(j=0;j<8000;j++);
       }
}
uchar key(void)
{   

    uchar m;
PORTC|=BIT(2);
DDRC|=BIT(2);
DDRC&=~BIT(2);
m=PINC;
m=m&0x04;
if(m=0x04)   
{
    return 0;
}
else
{
    return 1;
}
}

/*void device_restart(void)
{
   DDRC |= (1<<DDC4);
  PORTC |= ~(1<<PORTC4);
  delay(3);
  PORTC |= (1<<PORTC4);
  delay(1);
   
}*/

void main(void)  
{
uchar c;
uchar m;
uint addata;   
uchar n;
uint f;

  c=0;

twi_init();
IIC_Write(0x12,0x00,0x13,0x00);
twi_init();
IIC_Write(0x11,0x03,0x26,0x7f);
twi_init();
IIC_Write(0x27,0x7f,0x28,0x7f);

DDRA &=~(1<<DDA0)|~(1<<DDA1)|~(1<<DDA2);
PORTA |=(1<<PORTA0)|(1<<PORTA1)|(1<<PORTA2);
DDRB |= (1<<DDB0)|(1<<DDB1)|(1<<DDB2);

while(key())
  {
m=0;
switch(m)
    {
case 0:
   twi_init();
   IIC_Write(SLA_AW1,0x00,SLA_AW2,0x00);   //輸出燈光數據
   twi_init();
   IIC_read(SLA_AW1);
   IIC_read(SLA_AW2);
   break;
case 1:
  
   twi_init();
   IIC_Write(SLA_AW1,DATA1,SLA_AW2,DATA2);   //輸出燈光數據
   delay(2);
   
   ADMUX=0x00;         
    PORTA &=~(1<<PORTA0);
    ADCSRA=0X80;            
    ADCSRA|=BIT(ADSC);
    while(!(ADCSRA&(BIT(ADIF))));
       addata=ADCL;
    addata=addata+ADCH*256;
   
   twi_init();
   IIC_read(SLA_AW1);
   IIC_read(SLA_AW2);
   
   break;
   
case 2:  

   twi_init();
   IIC_Write(SLA_AW1,DATA3,SLA_AW2,DATA4);   //輸出燈光數據
   delay(2);
   
   ADMUX=0x01;
    PORTA &=~(1<<PORTA1);
    ADCSRA=0X80;
    ADCSRA|=BIT(ADSC);
    while(!(ADCSRA&(BIT(ADIF))));
       addata=ADCL;
    addata=addata+ADCH*256;
   
   twi_init();
   IIC_read(SLA_AW1);
   IIC_read(SLA_AW2);
   
   break;
   
case 3:
  
   twi_init();
   IIC_Write(SLA_AW1,DATA5,SLA_AW2,DATA6);   //輸出燈光數據
   delay(2);
   
    ADMUX=0x02;
   PORTA &=~(1<<PORTA2);
      ADCSRA=0X80;
      ADCSRA|=BIT(ADSC);
   while(!(ADCSRA&(BIT(ADIF))));
       addata=ADCL;
    addata=addata+ADCH*256;
   
   twi_init();
   IIC_read(SLA_AW1);
   IIC_read(SLA_AW2);
   
   break;
default :
   m=0;
      break;
   
   }
      m++;
   f=addata;
   if(f<=0x3f)
   n=0;
   
   else if ((f>0x3f)&(f<=0x7e))
   n=1;
   
   else if ((f>0x7e)&(f<=0xbd))
   n=2;
   
   else if ((f>0xbd)&(f<=0xfc))
   n=3;
   
   else if ((f>0xfc)&(f<=0x12b))
   n=4;
   
   else if ((f>0x12b)&(f<=0x16a))
   n=5;
   
   else if ((f>0x16a)&(f<=0x1a9))
   n=6;
   
   else if ((f>0x1a9)&(f<=0x1e8))
   n=7;
   
   else if ((f>0x1e8)&(f<=0x227))
   n=8;
   
   else if ((f>0x227)&(f<=0x266))
   n=10;
   
   else if ((f>0x266)&(f<=0x29d))
   n=11;
   
   else
   n=12;
   
   twi_init();
   IIC_Write(SLA_AW1,a[n],SLA_AW2,b[n]);
   
   twi_init();
   IIC_read(SLA_AW1);
   twi_init();
   IIC_read(SLA_AW2);
}
                                                                                                                                                                                          
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:370192 發表于 2018-7-13 17:07 | 只看該作者
沒人我自己答一波.找了兩天,終于發現按鍵邏輯不用配置輸出,按鍵就可以進去,但是進去了無限循環,然后又需要跳出來,用一個break語句解決
回復

使用道具 舉報

板凳
ID:370192 發表于 2018-7-13 17:11 | 只看該作者
按鍵引腳不用設置輸出,按鍵就可以用了,然后進入循環出不來,不可以重復選擇別的狀態,用break跳出舊可以了循環里面用m計數.再次進入就可以跳到別的狀態了.
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久久久 | 久久精品一区二区三区四区 | 久久久久国产精品午夜一区 | 欧美性影院 | 播放一级黄色片 | 亚洲欧洲日韩 | 久久久久久久91 | 一区精品在线观看 | 国产一区免费视频 | 亚洲精品久久久久avwww潮水 | 丁香久久 | 一区二区三区四区在线 | 一区二区国产精品 | 每日更新av | 在线观看视频一区二区三区 | 午夜免费在线电影 | 欧美色综合一区二区三区 | 日本福利视频 | 毛片网站在线观看 | 欧美日韩高清在线一区 | 成人精品视频在线 | 午夜网站视频 | 国产精品日韩在线 | 亚洲国产精品久久久 | 久久久久亚洲av毛片大全 | 久久99精品久久久久久国产越南 | 亚洲第一中文字幕 | 色综合99 | 午夜精品久久久久久久久久久久久 | 久久99国产精品 | 午夜激情免费视频 | 91麻豆精品国产91久久久更新资源速度超快 | 国产福利在线看 | 日韩a视频 | 亚洲一级二级三级 | 日本特黄特色aaa大片免费 | 日本一道本视频 | 91精品无人区卡一卡二卡三 | 欧美一级全黄 | 亚洲毛片在线 | 高清国产午夜精品久久久久久 |