這是我寫的動態顯示數碼管的程序,但是卻報錯如下:
事牘芟允?c(37): error C141: syntax error near '=', expected '__asm'
我找了一下,發現是 smg=smgduan;這出問題了 ,想問一下 宏定義的smg是不能給它賦值嗎?
單片機源程序如下:
- #include "reg52.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值,code值的是將smgduan[]存放在ROM中,而不是RAM中,這樣可以節約資源
- #define smg P0;
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- void delay100us(void) //誤差 0us
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=47;a>0;a--);
- }
- void smgshow(u8 i)
- {
- switch(i)
- {
- case 0:LSC=0;LSB=0;LSA=0;break;
- case 1:LSC=0;LSB=0;LSA=1;break;
- case 2:LSC=0;LSB=1;LSA=0;break;
- case 3:LSC=0;LSB=1;LSA=1;break;
- case 4:LSC=1;LSB=0;LSA=0;break;
- case 5:LSC=1;LSB=0;LSA=1;break;
- case 6:LSC=1;LSB=1;LSA=0;break;
- case 7:LSC=1;LSB=1;LSA=1;break;
- }
- smg=smgduan[i];
- delay100us();
- smg=0x00;
- }
- void delay10ms(void) //誤差 0us
- {
- unsigned char a,b,c;
- for(c=1;c>0;c--)
- for(b=38;b>0;b--)
- for(a=130;a>0;a--);
- }
- void main()
- {
- u8 i;
- while(1)
- {
- for(i=0;i<=7;i++)
- {
- smgshow(i);
-
- }
- }
- }
復制代碼 |