Ⅰ keil與wave編譯器的區別
命名。Keil是美國KeilSoftware公司出品的51系列兼容單片機C語言軟體開發系統,WAVE編譯器用的也是KEIL系統,所以這兩者除了命名的名字不同,其他方面並沒有什麼不同。
Ⅱ 單片機數字溫度計編程問題,程序用WAVE編譯後沒有錯誤,但是存入晶元後數碼管不顯示,不知道為什麼。
建議在現實部分看下
是否有觸發條件的死循環,或者
你就燒個數碼管顯示的程序
看下是否是數碼管的硬體問題,先找到是硬體問題還是軟體問題,逐一排除,調試過程就是這樣的。
Ⅲ 怎麼在WAVE裡面加入單片機頭文件
解決方法有兩個:
1,你直接把頭文件加到WAVE的安裝文件夾里的include裡面
2,你也可以將需要用到的頭文件放到你的工程裡面,然後將那個#include<c8051f040.h>改為#include"c8051f040.h",講<>改為"",則編譯的時候會默認為這個頭文件是你自己建立的,它會自動在你的工程文件夾裡面尋找。
Ⅳ 單片機編程 交通燈的控制(求wave軟體的程序源程序*.asm)
五、設計說明
1. 因為本設計是交通燈控制設計,所以要先了解實際交通燈的變化規律。假設一個十字路口為東西南北走向。初始狀態0為東西紅燈,南北紅燈,然後轉狀態l南北綠燈通車,東西紅燈;過一段時間轉狀態2,南北綠燈閃幾次轉亮黃燈,延時3秒,東西仍然紅燈;再轉狀態3,東西綠燈通車,南北紅燈;過一段時間轉狀態4,東西綠燈閃幾次轉亮黃燈,延時3秒,南北仍然紅燈;然後在循環至狀態1,依次類推。
2. 中斷服務程序的關鍵是:(1)保護進入中斷時的狀態,並在退出中斷之前恢復進入時的狀態。(2)必須在中斷程序中設定是否允許中斷重入。
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP INT
ORG 0040H
MAIN:MOV SP,#60H
SETB EA
SETB EX0
SETB PX0
SETB IT0
MOV P1,#09H
ACALL DELAY1S
ABC:MOV R0,#3
MOV R1,#3
MOV P1,#0CH
ACALL DELAY1S
DEF:
CLR P1.2
ACALL DELAY2S
SETB P1.2
ACALL DELAY2S
DJNZ R0,DEF
MOV P1,#0AH
ACALL DELAY1S
MOV P1,#11H
ACALL DELAY1S
MOV P1,#21H
ACALL DELAY1S
GHI:CLR P1.5
ACALL DELAY2S
SETB P1.5
ACALL DELAY2S
DJNZ R1,GHI
MOV P1,#11H
AJMP ABC
INT: CLR EA
PUSH PSW
PUSH ACC
PUSH 05H
PUSH 06H
PUSH 07H
PUSH P1
SETB EA
MOV P1,#09H
ACALL DELAY1S
CLR EA
POP P1
POP 07H
POP 06H
POP 05H
POP ACC
POP PSW
SETB EA
RETI
DELAY1S:MOV R7,#5
DEL:MOV R6,#255
DE:MOV R5,#255
DJNZ R5,$;FOSC=6MHZ
DJNZ R6,DE
DJNZ R7,DEL
RET
DELAY2S:MOV R4,#250
DELL:MOV R3,#250
DJNZ R3,$;FOSC=6MHZ
DJNZ R4,DELL
RET
END
Ⅳ 用WAVE編寫:單片機與上位機通信!
WAVE 只是 編譯工具啊!!
如果與上微機通訊 無非是讓你做個串列通訊程序 而已 不用緊張
直接上網搜個 RS232 程序 交差就可以了
Ⅵ proteus單片機模擬能不能直接調用wave上設計的程序(asm格式或編譯後的bin格式文件)來模擬執行
能
只要你在proteus上聯好電路,然後把asm格式的文件載入進去,就可以了。
Ⅶ 單片機程序用WAVE編譯,出現重復定義怎麼辦
看的我眼花
Ⅷ wave模擬,單片機的匯編程序格式怎樣寫以及怎樣調試,請知友告知
文件——新建,文件——保存(存成xx.asm)如圖,模擬器——模擬器設置——生成bin,模擬器——E6000——PODH8X5X——89C51RX(並勾選軟體模擬設置晶振,如圖)——好,在彈出的偉福模擬器對話框點擊好。
接下來編寫自己的程序,寫完後點擊左上角第三個圖標(或按F9)編譯文件,如有格式錯誤會有錯誤提示,無錯誤會生成可下載入單片機的目標文件。至於調試,什麼各種圖標運行、全速運行、單步運行、斷點……自己摸索,稍微動動腦子就能理解。
Ⅸ 單片機寫超聲波代碼問題
把這個
wave_send = 1;
delay(20);
wave_send = 0; //發送聲波
while(wave_receive==0){
time_count++;
if(time_count>400)time_check=1;break;}
TR0=1;TR0=0;
while(wave_receive==1);
改為
wave_send= 0; //發出一個完整的方波
wave_send = 1;
delay(20);
wave_send = 0; //發送聲波
while(wave_receive==0); //等待發出超聲波 模塊發出超聲波時 wave_receive置高
TR0=1;
while(wave_receive==1); //等待接收超聲波 模塊接收到超聲波時 wave_receive由1變為0
TR0=0;
times=TH0*256+TL0; //增加個變數 times 用來表示定時技術次數 計算時間
TH0=0;TL0=0;
time_count=1.085*times*0.17; // 1.085為晶振為11.0952的12T單片機的機器周期
// 0.17為0.17mm/μs 聲速的一半 time_count是測量的距
// 離
if(time_count>400){time_check=1;}
Ⅹ 用模擬器可以通過,燒錄好單片機之後就不可以了。一般都會有什麼原因 單片機和模擬器(wave)有什麼區別
1)如果脫離模擬器以後,單片機根本就不工作的話,可以考慮是一下是否復位電路有問題.通常模擬器帶有復位電路.所以帶模擬器的時候不會出現復位問題.
2)電源問題,模擬器可以為單片機供電,並且可以起到一定的電源濾波作用,脫離開模擬器這些條件就沒了.
3)晶體協振(無源晶振)問題:檢查兩個對地的補償電容是否焊接好,並且與數據手冊的參考值相匹配.
4)如果脫離模擬器後,出現工作異常,還可以考慮是否是模擬器下工作的速度和脫離模擬器後的速度不一樣.
5)如果只是程序工作異常,要檢查變數聲明後是否沒有初始化,某些模擬器會對程序變數進行初始化,這樣脫離開模擬器後,需要進行初始化的變數未進行初始化可能會導致程序運行異常.
暫時就想到這些,希望能夠對你有所幫助!