找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2073|回復: 9
收起左側

匯編寫51單片機程序,運行失敗

[復制鏈接]
ID:280454 發(fā)表于 2022-1-29 17:16 | 顯示全部樓層 |閱讀模式
本人是菜鳥,自學單片機,因為是音響發(fā)燒友,所以DIY音響時會用到單片機做一些簡單的控制。最近在DIY PCM63的DAC,用51單片機進行控制和顯示。結果程序運行失敗。請各位老師幫忙看看,指導一下,謝謝。

基本思路是,上電后一直不停的檢測K1。如果是低平電時就開行進入工作狀態(tài),如果是高電平就進入待機狀態(tài),1602 LCD上顯示待機信息。在工作為過程中啟用定時器0,作按鍵定檢測和K1的狀態(tài)識識,如果K1為0繼續(xù)保持正常工作狀態(tài),如果K1為1,就跳轉到待機模式,顯示待機信息。

現(xiàn)在的情況是,開機能正常顯示待機信息,也能正常判斷K2狀態(tài),但是如果進入在正常工作模式中,檢測到K2為1(高電平)時跳轉到待機模式后,LCD不能顯示待機信息了。而且不現(xiàn)檢測K2的狀態(tài),好像是死機了。

下面貼上程序,寫得非常垃圾,請各位老師不要嘲笑,我虛心接收各位老師的指點,謝謝 。
1.png
2.png

4.png
回復

使用道具 舉報

ID:280454 發(fā)表于 2022-1-30 11:38 來自觸屏版 | 顯示全部樓層
請各位老師幫忙檢查一下指點一下。謝謝。
回復

使用道具 舉報

ID:283954 發(fā)表于 2022-1-30 13:28 | 顯示全部樓層
看別人寫的匯編有如看天書,不知道我的理解是否有誤:第一次看到純粹靠中斷來運行的程序,開機后什么都沒有設定進入待機,按鍵后進入MAIN,運行到末端就在那空轉等中斷,沒有中斷就沒有運作,也沒有LED會閃來指示“我還活著”,所以才有“不知道是否死機”的疑問,中斷程序里還有“LCALL DELAY”,不知道去了那會被打轉多少次,回來時已是天上人間,這期間是否有其他中斷發(fā)生未及處理或處理不當,副程式里還有AJMP到FS44,F(xiàn)S44是干什么的看不到,去了也不懂有沒有回來,如果沒有回來底下那個RET就永遠無法執(zhí)行,每多一次中斷就積壓一組回歸地址在STACK沒有出來,直到超過極限而崩潰,大概是這樣吧?這里的作者名字全部變成代號了,無名無姓,認不出,不產生情感。
回復

使用道具 舉報

ID:280454 發(fā)表于 2022-1-30 18:27 來自觸屏版 | 顯示全部樓層
dalaoshi 發(fā)表于 2022-1-30 13:28
看別人寫的匯編有如看天書,不知道我的理解是否有誤:第一次看到純粹靠中斷來運行的程序,開機后什么都沒有 ...

已經明確的說了。1602LCD,為什么還要LED呢?
回復

使用道具 舉報

ID:137736 發(fā)表于 2022-1-30 20:37 | 顯示全部樓層
用C寫吧,簡單明了,易于理解
回復

使用道具 舉報

ID:280454 發(fā)表于 2022-1-31 14:58 來自觸屏版 | 顯示全部樓層
zmc419 發(fā)表于 2022-1-30 20:37
用C寫吧,簡單明了,易于理解

我不會C啊,尷尬。。。
回復

使用道具 舉報

ID:255377 發(fā)表于 2022-2-19 00:00 來自觸屏版 | 顯示全部樓層
sfes1314 發(fā)表于 2022-1-30 11:38
請各位老師幫忙檢查一下指點一下。謝謝。

Work:
JNB  KEY, No_work    ;0-執(zhí)行下一行,1-跳轉不工作
CALL Display_1602
JMP  Work

No_work:
           JNB  KEY,Work  ;檢測是否為0
提供你思路

      
回復

使用道具 舉報

ID:283954 發(fā)表于 2022-2-19 17:43 | 顯示全部樓層
自己開發(fā)底板和用匯編寫程序,至少要有一顆LED做指示,因為只要一個代碼。SETB或CLR就能看到程序是否運行到那邊,或者死在那里,LCD是個復雜設備,就算MCU不去理他,字符還在那,連光標都會閃呢!所以不能作為除錯之用。
回復

使用道具 舉報

ID:1003077 發(fā)表于 2022-2-19 19:30 | 顯示全部樓層
WriteIR程序沒出現(xiàn),正常進入后顯示內容怎么給出看不來,也有可能你正常進入后給值邏輯有問題吧。你配個電路連接圖可能更容易讓人看明白
回復

使用道具 舉報

ID:1003077 發(fā)表于 2022-2-19 19:32 | 顯示全部樓層
先把定時器和外部中斷在main一開始就初始化,EA置1寫在SJMP $前,使程序易讀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表