導航:首頁 > 源碼編譯 > 單片機老是編譯一個程序

單片機老是編譯一個程序

發布時間:2022-04-27 05:06:38

1. 我在做單片機數字鍾,但程序老是編譯不成功,求高手解答

#include <REG51.H>
#define uint unsigned int
#define uchar unsigned char
uint sec;
uint min=0;
uint hour=0;
uint tcnt;
sbit k0=P3^2;
sbit k1=P3^3;
sbit k2=P3^4;
sbit k3=P3^5;
sbit k4=P3^6;
sbit k5=P3^0;
sbit k6=P3^1;

unsigned char table[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x40,0x00};

//void display(unsigned char a,unsigned char b,unsigned char c);
void display(void);
void delay(unsigned int z)
{
unsigned int x;
unsigned char y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
void display()
{
P1=0xfe;P2=0x00;
P2=table[sec%10];
delay(3);

P1=0xfd;P2=0x00;
P2=table[sec/10]; //秒數的個位
delay(3);

P1=0xfb;P2=0x00;
P2=table[10];
delay(3);

P1=0xf7;P2=0x00;
P2=table[min%10];
delay(3);

P1=0xef;P2=0x00;
P2=table[min/10];
delay(3);

P1=0xdf;P2=0x00;
P2=table[10];
delay(3);

P1=0xbf;P2=0x00;
P2=table[hour%10];
delay(3);

P1=0x7f;P2=0x00;
P2=table[hour/10];
delay(3);
}

main()
{
TCON=0x01;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
EX0=1;
PX0=1;

while(1)
{

display();

}
}
void service_int0() interrupt 0
{
if(k5==0)
{ sec++;
if(sec==60)
sec=0;
}
if(k6==0)
{sec--;
if(sec==0)
sec=59;
}
if(k3==0)
{ min++;
if(min==60)
min=0;
}
if(k4==0)
{ min--;
if(min==0)
min=59;
}
if(k1==0)
{ hour++;
if(hour==24)
hour=0;
}
if(k2==0)
{ hour--;
if(hour==0)
hour=23;
}

}
void t0(void)interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;

sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;

}

}
}
}
}

2. 單片機程序,程序沒問題,編譯不出來怎麼回事

單片機的內存地址0003H是中斷子程序入口,你從000H開始編輯程序,然後接了個SJMP跳轉到START,但是你的START程序沒有另起地址,假設SJMP是兩個位元組指令的話,那麼你的START程序段的地址就是0003H,把中斷子程序入口堵住了,所以你的程序就產生了警告。

3. 單片機c語言keil編譯程序老是提示 KEYS.H(11): error C129: missing ';' before 'key'

你這個程序也是做成了頭文件了吧,在主程序中用#include定義包含這個頭文件的位置是在typedef unsigned char uint8; 前面了吧,這樣typedef的定義就無效了,交換一下順序。

4. 我編了一段51單片機程序,在keil中運行,然後一直處於編譯狀態,等了半天也沒有編譯好,請問是什麼原因

那就是程序沒有編好

5. 單片機編譯C語言程序,出現問題了!

你應該是新手吧,沒有位定義就用了啊!
應該是這樣的:
sbit
LEDK
=P1^7;
timer0()
interrupt
1
using
1
{
LEDK=!LEDK;
TH0=-50000/256;
TL0=-50000%256;
}

6. 有關單片機的錯誤,不管我編譯什麼程序都是這樣

基本是工程建錯了。先建工程,選型號,我一般選ATMEL-》AT89S51,新建文件,保存為*.asm,在窗口最左側的soure group點右鍵,選擇ADD files to group,找到剛建的*.asm文件,點擊add,再點close,寫程序,build。

7. 51單片機程序編譯完後為什麼還是顯示錯誤,工程什麼的都已經建立好了。

工程什麼的都已經建立好了,只一個起步,不代表什麼的。

51單片機程序編譯完後為什麼還是顯示錯誤,這不可能,只要有錯誤,編譯就不會完成的。
你程序有錯誤,不等於編譯一遍就對了,不找錯誤,就是編譯一百遍也沒有用。

8. 單片機程序WAVE6000編譯的一段程序,一直提示重復定義,怎麼改

#define Ra-La 11.9改成#define Ra_La 11.9 回為在C語言中只能用下線

int i;在你的程序中沒用用該變數,不用定義,多定義了在編譯時就會出現警告

9. 單片機程序不知道哪裡錯了,總是編譯不出來,高手指教

ACALL DIS11
ACALL CLEARRAM
ACALL DISPLAYS
ACALL DISPLAYV

MOV GEWEI,#0AH ; 開機顯示
MOV SHIWEI,#0AH
MOV BAIWEI,#0AH
MOV QIANWEI,#0AH
INC SJIAN1
你的第一類錯誤,很多變數在使用前都沒有預先定義

ACALL DELAY2
第二類錯誤是,程序中用到的很多跳轉標號和調用的子程序都沒有定義

JB P3.2 JB是判斷語句,後要有跳轉的偏移地址
第三類錯誤就是,有些匯編指令的書寫格式不對

10. 單片機程序編譯有一個錯誤,請幫忙解決

你給出的程序問題很大,像樓上說的,ORG偽指令
ORG 0000H
JMP MAIN
ORG 0003H
JMP EX0_INTERRUPT
;ORG 000BH
;......
在程序的開始,就要寫主程序的入口地址,以及中斷程序的入口地址。
MAIN:程序結尾的END不能忘掉,
MOV R0 #0A0H
MOV R2 #08H
這是你程序錯誤的原因。像含有多個操作數的指令,中間都會有分號存在。
MOV R0,#0A0H
MOV R2,#08H
注意,分號是英文的,不是中文的。

還有一點啊,你不是寫C語言的,不是每句話結束都要用分號的,在匯編中分號只是注釋符號。。。

ORG 0000H
JMP MAIN
ORG 0013H
JMP EX1_INTERRUPT ;有中斷來了,就跳
MAIN:
MOV R0,#0A0H
MOV R2,#008H
SETB IT1
SETB EA
SETB EX1
MOV DPTR,#7FF8H
MOVX @DPTR,A
HERE:SJMP HERE ;此處應是等待中斷,中斷完成還是跳回此處。

;下面是中斷程序
EX0_INTERRUPT: ;我是從0013H地址跳過來的
MOVX A,@DPTR
MOV @R0,A
MOV P1,@R0
INC DPTR
INC R0
DJNZ R2,DONE
RETI ;中斷子程序結束
DONE:MOVX @DPTR,A
RETI ;中斷子程序結束
RET ;這個程序結束的END不能丟

恩,就這樣了,祝樓主學習順利。

樓上的iie2010:
SETB IT1
SETB EA
SETB EX1
這三句話只說明中斷時外部中斷1,下降沿觸發。
呵呵。。

閱讀全文

與單片機老是編譯一個程序相關的資料

熱點內容
ug命令視頻大全 瀏覽:610
箱子裝貨物最小容量編程 瀏覽:99
cad2014教程pdf 瀏覽:200
怎麼遍歷伺服器同一類型的文件 瀏覽:436
惠普戰66畫圖編程 瀏覽:806
java面向對象作業 瀏覽:570
cad插件製作加密狗 瀏覽:923
cmd命令對話框 瀏覽:291
安卓應用怎麼常駐 瀏覽:677
安卓手機怎麼群發小費才不會被鎖 瀏覽:741
相機文件夾設置 瀏覽:856
centos7php怎麼用 瀏覽:119
查看linux操作系統版本的命令 瀏覽:383
收支預演算法怎麼做 瀏覽:876
模板如何上傳到伺服器 瀏覽:372
如何同步安卓信息到新ipad 瀏覽:365
騰訊雲輕量伺服器流量警告 瀏覽:504
u盤備份linux 瀏覽:121
高壓縮比活塞 瀏覽:92
壓縮彈簧標准件 瀏覽:26