国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 3791|回復: 1
打印 上一主題 下一主題

單片機 C51 編程要點總結

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2017-8-21 11:13:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機 C51 編程要點總結
1、頭文件:#include
2、預定義:sbit LED = P1^0  // 定義 P1 口的 0 位為 LED  
注:“P1^0”這個寫法,與 A51 不同(A51 P1.0)P1 是一組端口,端口號范圍 0~7
2sbit 用于定義 SFR(特殊功能寄存器)的位變量,上例中 LED 作為全局變量進行定義
3:以下寫法是錯誤的:
sbit code table[ ] = {P1^0, P1^1, P1^2, P1^3};  // 想用 table 指定不同的引腳,但這么做會報錯
sbit table[ ] = {P1^0, P1^1, P1^2, P1^3};            // 考慮到上面可能是 code 關鍵字使用錯誤,使用標準 C 數組寫法,但這同樣是錯的
3、主函數寫法:void main (void)
4、數值的表示:
P1 = 1111 1111       // 二進制
P1 = 0xff 或者 P1 = 0xFF   // 十六進制,0x 開頭,且數值不分大小寫
P1 = 255          // 十進制
5、定義小數值時,可以使用 unsigned char i,這樣 i 的范圍為 0~255,作為循環變量比較好用
6、左右移位:
P1 <<= 2 等價于 P1 = P1 << 2  // P1 左移 2 位,左移一位相當于乘以 2
P1 >>= 3 等價于 P1 = P1 >> 3  // P1 右移 3 位,右移一位相當于除以 2
注:左右移位默認為邏輯移位,即無論左移還是右移,空位都補 0
7、按位與或:
P1 = P1 & 0x01
P1 = P1 | 0x01
8、定義 ROM 表格(就是數據為常量的數組)
unsigned char code table[ ] = {0xff, 0xff, 0xff, 0xff};
使用:P1 = table
注:table[ ] 定義為全局變量,上例中 i 的范圍為 0~3
2code 定義的常量存于代碼區,即 ROM 區,可以節省 RAM 空間
9、在使用數碼管編程時,假如你正在使用 temp 代表某一個顯示字符,突然想顯示小數點,可以使用 temp | 0x80,通過運算實現加上小數點……
10、如果你用 Keil C51 進行編譯,記住一點:它不區分大小寫!!!臥槽,今天編程序那個調錯啊,就因為一個數組名和一個變量名完全一樣,只是大小寫不一樣罷了,標準 C 我怎么記得這樣可以啊……上網一查,臥槽,Keil C51 不區分大小寫,準確的說是連接的時候不區分大小寫,更準確一點就是具有外部連接的變量區分大小寫,內部連接 static 區分大小寫”……至少 Keil uVision2 是這樣,不知道別的版本是不是,待驗證……
11、沒有 unsigned float x !float 型變量從來沒有前邊加 unsigned 的語法!
12Keil 編譯的程序,main 函數執行完不會停止,會循環執行 main 函數,何解?
結論 1:如果主程序中沒有 while(1) 這個無限循環,程序走到最后會再次從頭開始執行。
結論 2:如果主程序有 while(1) 這個無限循環,程序走到最后會一直在這個死循環中運行,不會出現再從頭執行的情況。
這應該屬于 Keil 編譯器的 bug,有網友做過實驗,表示 Keil 編譯后期產生的匯編代碼中,結尾有一條 LJMP main,意思就是跳到 main 函數重復執行……還有一種說法是 PC 指針溢出,溢出后的地址指向開頭,造成繼續執行的效果……(博主覺得還是 Keil 的問題,要是 Keil 編譯器不產生 LJMP main 這種語句,也不會產生循環效應……)
不管怎么說,在程序結尾加上 while(1) 能夠解決循環執行 main 函數的 bug……

沙發
發表于 2020-3-2 14:10:22 | 只看該作者
謝謝分享!
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎影视在线免费观看 | 青青青视频精品中文字幕 | 久久er国产精品免费观看2 | 99精品视频在线视频免费观看 | 日本一本免费一二区 | 国产精品视频久久 | 成人在线综合网 | 日韩成人性视频 | 青草视频在线观看免费视频 | 色综合天天综合网看在线影院 | 欧美精品免费专区在线观看 | 91亚洲欧美 | 精品视频一区二区三区在线观看 | 国产成人一区二区三区免费观看 | 亚洲成人手机在线观看 | 麻豆18在线播放 | 综艺在线看免费高清 | 欧美日韩免费一区二区三区 | 香蕉大伊亚洲人在线观看 | 五月婷婷狠狠干 | 妹天堂在线观看 | 人心蜈蚣2在线观看 | 伊人俺去久久涩五月综合 | 欧美日韩一区在线观看 | 国产3级在线观看 | 欧美成人片在线 | 国产一级精品毛片 | 国产三级一区 | 久久精品一区二区三区资源网 | 四虎网址在线观看 | 香蕉久久高清国产精品免费 | 国产精品资源在线观看网站 | 亚洲激情中文字幕 | 青青草原91 | 国产中日韩一区二区三区 | 久久精品一区二区三区中文字幕 | 日日免费视频 | 亚洲高清中文字幕 | 99久久免费国内精品 | 国产欧美精品一区二区三区 | 亚洲国产一区二区三区 |