1 現象:
每次創建keil工程的時候都會彈出提示: Copy stardard 8051 startup code to project folder and add file to project。
2 解決:
(1)在執行C代碼之前都要先運行一個匯編程序,這個匯編程序叫做startup code(啟動程序),其作用是對單片機進行初始化操作,為主函數設置堆棧,運行完成之后才開始執行C程序中的主函數。
加載的startup.A51文件,其主要作用是:上電時初始化單片機的硬件堆棧、初始化RAM、初始化模擬堆棧和跳轉到主函數main。硬件堆棧是用來存放函數調用地址、變量和寄存器值的;模擬堆棧是用來存放可重入函數的,可重入函數就是同時給多個任務調用,而不擔心數據的丟失,可重入函數一般在嵌入式系統中有所體現。如果不加載該文件,編譯的代碼可能會是單片機工作異常。
(2)如果沒有添加該啟動程序,KEIL會默認預先執行該程序;如果添加該啟動程序,可以修改此程序,運行時使用的就是經過修改的啟動程序了。
3. 參考資料
(2)keil中StartUp.A51的重要性 - 百度文庫 (baidu.com);
(3)王靜霞等. 單片機應用計數(C語言版)第3版[M]. 北京,電子工業出版社,2015:4.