欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4625|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

問(wèn)一個(gè)C51單片機(jī)的語(yǔ)法問(wèn)題,編譯器提示TMOD, TH1,TL1,ET0重復(fù)定義

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:523537 發(fā)表于 2019-6-16 23:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/******問(wèn)題描述**********/
   我只包含了一次reg52.h,但是編譯器提示TMOD, TH1,TL1,ET0等都重復(fù)定義了,我也不是很明白為什么會(huì)這樣。
lesson15_1.c(49): error C141: syntax error near '{'
lesson15_1.c(50): error C231: 'TMOD': redefinition
lesson15_1.c(50): error C231: 'TMOD': redefinition
lesson15_1.c(51): error C231: 'TH0': redefinition
lesson15_1.c(51): error C231: 'TH0': redefinition
lesson15_1.c(52): error C231: 'TL0': redefinition
lesson15_1.c(52): error C231: 'TL0': redefinition
lesson15_1.c(53): error C231: 'ET0': redefinition
lesson15_1.c(53): error C231: 'ET0': redefinition
lesson15_1.c(54): error C231: 'TR0': redefinition
lesson15_1.c(54): error C231: 'TR0': redefinition
lesson15_1.c(55): error C141: syntax error near '}'


/********************************源程序*********************************/
  1. #include <reg52.h>


  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換

  5. uchar code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. sbit Bit_Latch = P2^3;
  7. sbit Seg_Latch = P2^2;

  8. sbit infrared_receiver = P3^2;//P3^2是外部中斷0的引腳
  9. uchar irtime;//紅外全局變量

  10. bit irpro_ok, irok;//紅外數(shù)據(jù)處理標(biāo)志位,紅外接收標(biāo)志位
  11. uchar ircord[4], irdata[33];


  12. void IR_work();
  13. void IRcordpro();
  14. void Init_Timer0();
  15. void EX0_Init();


  16. void main()
  17. {
  18.         Init_Timer0();//定時(shí)器0初始化
  19.         EX0_Init();//外部中斷初始化
  20.         
  21.         DataPort = 0xfe;
  22.         Bit_Latch = 1;
  23.         Bit_Latch = 0;
  24.         
  25.         while(1)
  26.         {
  27.                 if(irok)
  28.                 {
  29.                         IRcordpro();
  30.                         irok = 0;
  31.                 }
  32.                 if(irpro_ok)//如果處理好后進(jìn)行工作處理,如按對(duì)應(yīng)的按鍵后顯示對(duì)應(yīng)的數(shù)字等
  33.                 {
  34.                         IR_work();
  35.                 }
  36.         }
  37. }

  38. void Init_Timer0();
  39. {
  40.         TMOD = 0x02;
  41.         TH0 = 0x00;
  42.         TL0 = 0x00;
  43.         ET0 = 1;
  44.         TR0 = 0;
  45. }

  46. void EX0_Init()
  47. {
  48.         IT0 = 0;//外部中斷0下降沿觸發(fā)
  49.         EX0 = 1;
  50.         EA = 1;//開(kāi)總中斷
  51. }

  52. void IRcordpro()
  53. {
  54.         uchar i, j, k;
  55.         uchar cord, value;
  56.         
  57.         k = 1;
  58.         for(i=0;i<4;i++)
  59.         {
  60.                 for(j=0;j<8;j++)
  61.                 {
  62.                         cord = irdata[k];
  63.                         if(cord > 7)
  64.                         {
  65.                                 value |= 0x80;
  66.                         }
  67.                         if(j<7)
  68.                         {
  69.                                 value >>= 1;
  70.                         }
  71.                         k++;
  72.                 }
  73.                 ircord[i] = value;
  74.                 value = 0;
  75.         }
  76.         irpro_ok = 1;
  77. }

  78. void IR_work()
  79. {
  80.         switch(ircord[2])
  81.         {
  82.                 case 0x0c: DataPort = DuanMa[1];break;
  83.                 case 0x18: DataPort = DuanMa[2];break;
  84.                 case 0x5e: DataPort = DuanMa[3];break;
  85.                 case 0x08: DataPort = DuanMa[4];break;
  86.                 case 0x1c: DataPort = DuanMa[5];break;
  87.                 case 0x5a: DataPort = DuanMa[6];break;
  88.                 case 0x42: DataPort = DuanMa[7];break;
  89.                 case 0x52: DataPort = DuanMa[8];break;
  90.                 case 0x4a: DataPort = DuanMa[9];break;
  91.                 default: break;
  92.         }
  93.         irpro_ok = 1;
  94. }


  95. void Timer0() interrupt 1 using 1//定時(shí)器0中斷
  96. {
  97.         irtime++;
  98. }

  99. void EX0_IR()  interrupt 0   //外部中斷0
  100. {
  101.         static uchar i;
  102.         static bit startflag;
  103.         
  104.         if(startflag)
  105.         {
  106.                 if(irtime < 63 && irtime > 33)
  107.                 {
  108.                         i = 0;
  109.                 }
  110.                 irdata[i] = irtime;
  111.                 irtime = 0;
  112.                 i++;
  113.                 if(i == 33)
  114.                 {
  115.                         irok = 1;
  116.                         i = 0;
  117.                 }
  118.                
  119.         }
  120.         else
  121.         {
  122.                 irtime = 0;
  123.                 startflag = 1;
  124.         }
  125. }
復(fù)制代碼

各位大佬走過(guò)路過(guò)進(jìn)來(lái)幫我看看呀。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來(lái)自 2#
ID:388197 發(fā)表于 2019-6-17 03:30 | 只看該作者
48行,把
void Init_Timer0();

后面的分號(hào)去掉就好了.
回復(fù)

使用道具 舉報(bào)

來(lái)自 11#
ID:523537 發(fā)表于 2019-6-17 21:29 | 只看該作者
董董 發(fā)表于 2019-6-17 08:10
/*********************************************新的問(wèn)題*******************************************/
...

我知道了,單片機(jī)默認(rèn)電平為高電平,所以段選默認(rèn)是打開(kāi)的。
回復(fù)

使用道具 舉報(bào)

板凳
ID:207421 發(fā)表于 2019-6-17 05:33 | 只看該作者
void Init_Timer0();
多了個(gè)分號(hào)(;)而已
回復(fù)

使用道具 舉報(bào)

地板
ID:523537 發(fā)表于 2019-6-17 06:24 | 只看該作者
不好意思,我找錯(cuò)誤原因了,定義函數(shù)后面不能有分號(hào)。
回復(fù)

使用道具 舉報(bào)

5#
ID:523537 發(fā)表于 2019-6-17 08:02 | 只看該作者
cjm82 發(fā)表于 2019-6-17 03:30
48行,把
void Init_Timer0();

您說(shuō)的對(duì),是我自己疏忽了,多謝提醒。
回復(fù)

使用道具 舉報(bào)

6#
ID:523537 發(fā)表于 2019-6-17 08:02 | 只看該作者
lwh999995 發(fā)表于 2019-6-17 05:33
void Init_Timer0();
多了個(gè)分號(hào)(;)而已

您說(shuō)的對(duì),是我自己疏忽了,多謝提醒。
回復(fù)

使用道具 舉報(bào)

7#
ID:164385 發(fā)表于 2019-6-17 08:06 | 只看該作者
函數(shù)的后面多了個(gè)分號(hào)(;),函數(shù)是不能有的親
回復(fù)

使用道具 舉報(bào)

8#
ID:523537 發(fā)表于 2019-6-17 08:10 | 只看該作者
/*********************************************新的問(wèn)題*******************************************/
我現(xiàn)在有個(gè)新問(wèn)題,是這樣的,我在主函數(shù)里令P0為0xfe,并打開(kāi)了位選芯片,只選擇第一個(gè)數(shù)碼管,但是我全程沒(méi)有打開(kāi)段選信號(hào),為什么我后面使用紅外接收器改變數(shù)碼管數(shù)字的時(shí)候會(huì)正確顯示,不是應(yīng)該DataPort = 0xff(DataPort賦值一個(gè)數(shù));Seg_Latch = 1; Seg_Latch = 0;這樣才會(huì)打開(kāi)段選,然后才會(huì)顯示數(shù)字嗎?我上面的程序里除了定義sbit Seg_Latch = P2^2, 后面都沒(méi)有打開(kāi),但是居然也有用,我想請(qǐng)問(wèn)下為啥?
回復(fù)

使用道具 舉報(bào)

9#
ID:93224 發(fā)表于 2019-6-17 08:32 | 只看該作者
應(yīng)該加了兩個(gè)51的頭文件導(dǎo)致的
回復(fù)

使用道具 舉報(bào)

10#
ID:207421 發(fā)表于 2019-6-17 10:05 | 只看該作者
你的段選本來(lái)就開(kāi)了,共陰數(shù)碼管兩位? 沒(méi)電路圖,別人都是瞎猜,說(shuō)不定共陰都連一塊了。
回復(fù)

使用道具 舉報(bào)

12#
ID:517466 發(fā)表于 2019-6-17 22:26 | 只看該作者
學(xué)程序之前,一定要把用到的芯片的基本資料搞清楚。51系列單片機(jī)默認(rèn)初始化后,P1,P2,P3端口的輸出都是高電平的。繼續(xù)深入的話,你還需要了解內(nèi)部寄存器、內(nèi)存區(qū)的初始化狀態(tài)是什么樣子,否則,程序看起來(lái)沒(méi)問(wèn)題,實(shí)際一運(yùn)行,可能還會(huì)出問(wèn)題的。想要深入學(xué)習(xí)開(kāi)發(fā),基本知識(shí)一定要扎實(shí)。
回復(fù)

使用道具 舉報(bào)

13#
ID:523537 發(fā)表于 2019-6-18 11:06 | 只看該作者
suncat0504 發(fā)表于 2019-6-17 22:26
學(xué)程序之前,一定要把用到的芯片的基本資料搞清楚。51系列單片機(jī)默認(rèn)初始化后,P1,P2,P3端口的輸出都是高電 ...

說(shuō)的很有道理,我也是初學(xué)所以很多東西搞不清楚或者當(dāng)時(shí)記得后面忘記了,以后要好好練基本功。
回復(fù)

使用道具 舉報(bào)

14#
ID:123289 發(fā)表于 2019-6-18 13:41 | 只看該作者
芯片手冊(cè)上都有,仔細(xì)讀一遍芯片手冊(cè),你的收獲何止一點(diǎn)點(diǎn)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表