一、步驟
1、打開stc-isp軟件
2.打開keil仿真設置,選擇對應的單片機型號
3.點擊將所選目標單片機設置為仿真芯片,點擊下載,按一下單片機打下載按鈕
4.此時已經將仿真程序下載到單片機
5.此時點擊options,找到debug選擇STC Montor 51 Driver
找到當前對應的端口號(和stc里面的端口號對應)
6.點擊進入調試界面
注意點:默認狀態選擇到左邊,應修改到選擇右邊
也可以看右下角,如果是simulation?顯示的是STC Monitor-51才是對的
7.run開始運行 stop停止運行
二、單步調試
1、數碼管顯示不正常
?點擊數組后,點擊watch Windows
取消16進制顯示
將剛才打印到的數組添加進去
注意的是,只用在停止狀態數據才會刷新,程序運行過程中不會刷新
可以看到,這個數組是正確的?
下面繼續排查 數碼管轉換函數中的另一個數組,一定要在停止狀態添加,然后再運行,否則數據無法刷新
查看watch窗口可以看到,除了第一個,后面的都是空
因此,目前可以確定,錯誤在數碼管轉換函數里
進入函數發現,變量的初始條件沒有設置
如果發現錯誤要進行修改,一定要退出調試界面,否則無法成功修改,要退出調試界面重新編譯后,再進入調試界面,這個程序才會被更新?
2.忘記寫EA=1
在其他地方打斷點不會聽,說明沒有執行到這里
?然后再逐層往下面大斷點
發現時間變量是0,這是不合理的
將斷點打到這里,程序仍然沒有停,說明程序沒有運行到中斷服務程序
然后再去看中斷服務程序的初始化
看到是正確的,那么就可能是總中斷沒有開
3.斷點的刪除
刪除所有斷點
當然也可以手動刪除
斷點所停的行代表沒有執行
4.功能按鍵
點擊step是進入函數和執行當前這一步
?
點擊step over是跳過這一個,是執行完再跳到下一步
step和step over的區別是:如果是函數,step會進入這個函數,step over是無論是不是函數,都執行到下一行
點擊step out是 往下執行完函數,直到退出當前的函數
5.關于按鍵
在調試模式下,矩陣鍵盤上面的兩行按鍵不能使用,由于P30和P31用到了串口通信,一旦按下上兩行的按鍵,就會干擾串口通信調試就會崩潰掉
?
如果程序里用到了這兩行,就可以換兩個按鍵,比如67改成89
在獨立按鍵模式下,就可以換一下45
?6.頭文件
當發現報一串錯誤時,可能是頭文件的函數沒有加分號
三、打包文件夾
選中兩個,然后壓縮到zip文件
?
然后以準考證號命名壓縮包