欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
error C213: left side of asn-op not an lvalue 單片機程序編譯錯誤
[打印本頁]
作者:
我真的不會啊!
時間:
2020-3-16 03:32
標題:
error C213: left side of asn-op not an lvalue 單片機程序編譯錯誤
程序如下:紅色部分是第52行
#include <reg51.H>
#include <intrins.h>
#define uc unsigned char
#define ut unsigned int
#define FOSC 11059200L //系統頻率
#define BAUD 9600 //串口波特率
#define T1MS 1536 //1ms定時器
//宏定義ADC的操作命令
#define ADC_POWER 0x80 //ADC電源控制位
#define ADC_START 0x08 //ADC啟動控制位
#define ADC_FLAG 0x10 //ADC完成標志位
#define ADC_SPEEDLL 0x00 //420時鐘速度控制位
//#define unsigned int p3
#define AUXR 0x00
#define relay 0
#define touch 0
#define TMOD 0x01
#define TLO T1MS
#define TL0 T1MS
#define TH0 T1MS
#define TR0 1
#define ET0 1
#define EA 1
#define P1 P1M0
#define P1M0 0xff
#define P1M1 0x00
#define ADC_DATA 0xC6
sfr ADC_CONTR=0xC5;
sfr p3 = 0xB0;
sfr p1 = 0x90;
sbit RELAY = p3^7;//繼電器輸出
sbit TOUCH = p1^0;//觸摸檢測
uc sec,temp;
ut milsec;
void delay(uc i)
{
while(i) i--;
}
void InitUart(void);
void InintTimer0(void);
void InitADC(void);
uc GetADCResult(uc ch);
void main()
{
bit chanal;
ut save_times,light,voice;
AUXR=0x00;
InintTimer0();
InitADC();
sec=0;
relay=0;
while(1)
{
if(chanal)
{
light+=GetADCResult(2);//光照強度檢測
save_times++;
}
else
{
voice+=GetADCResult(6);//聲音分貝檢測
}
chanal=~chanal;
if(save_times==256) //消抖
{
save_times=0;
light/=256;
voice/=256;
}
if((light>200)||(voice>50)||(touch==0))relay=1;
if(sec>=20)relay=0; //延時輸出20秒后滅燈
delay(200);
delay(200);
}
}
/*
void InitUart(void)
{
SCON=0x50; //8個數據位,無校驗
TMOD|=0x20; //8位自動裝載
TH1=TL1=-(FOSC/12/32/BAUD);//設置波特率
TR1=1; //使能定時1
}
*/
void InintTimer0(void)
{
TMOD|=0x01;
TL0=T1MS;
TH0=T1MS>>8;
TR0=1;
ET0=1;
EA=1;
}
void InitADC(void)
{
P1=P1M0=0xff;
P1M1=0x00;
ADC_DATA=0;
ADC_CONTR=ADC_POWER|ADC_SPEEDLL;
delay(2);
}
uc GetADCResult(uc ch)
{
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
ADC_CONTR &=~ADC_FLAG;
return ADC_DATA;
}
void tm0_isr() interrupt 1 using 1
{
TL0=T1MS;
TH0=T1MS>>8;
milsec++;
if(milsec==1000)
{
if(sec<20)sec++;
}
}
錯誤如下:
Build target 'Target 1'
compiling lili.c...
LILI.C(52): error C213: left side of asn-op not an lvalue
作者:
我真的不會啊!
時間:
2020-3-17 12:11
請前輩們幫幫忙,謝謝
作者:
carpcarey
時間:
2020-3-17 16:16
第一:你的特殊寄存器都在REG51.h里用sfr 定義寄存器定義過了,所以AUXR、TMOD、TH0等等關鍵字被再次宏定義會亂掉的。
其次:你標紅的AUXR是你在開頭第16行宏定義的,不是變量,所以不能賦值的。
第三:如果發現reg51里沒有定義,那就要找到對應單片機的頭文件來使用,或者自己在頭文件里用sfr來定義添加這個寄存器的地址。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1