【正文】
創(chuàng)新可以是在原有的基礎(chǔ)上進(jìn)行改進(jìn),使之功能不斷完善,成為自己的東西 , 在課程設(shè)計(jì)過(guò)程中,我們要不斷地發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。實(shí)際能力的培養(yǎng)至關(guān)重要,而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂 走向?qū)嵺`。在這次課程設(shè)計(jì)中我發(fā)現(xiàn)最主要的還是要有明確的設(shè)計(jì) 思路,清晰的分析過(guò)程有很大的作用。如圖所示 A2A1A0A3A4A5A7A6A0A1A2A3A4A5A6A7A7A6A5A4A3A2A1A0X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 . 01P 1 . 12P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1 . 78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 / R D17P 3 . 6 / W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 / A 821P 2 .1 / A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1A T 8 9 C5 1R62 2 0R52 2 0R42 2 0R32 2 0R22 2 0R12 2 0R02 2 0R72 2 0X1CR Y S T A LR 1 61 0 kC13 0 p fC23 0 p fC41nFD2L E D Y E L L O WD3L E D Y E L L O WD4L E D Y E L L O WD5L E D Y E L L O WD6L E D Y E L L O WD7L E D Y E L L O WD8L E D Y E L L O WD1L E D Y E L L O WR 1 42 2 0R 1 32 2 0R 1 22 2 0R 1 12 2 0R 1 02 2 0R92 2 0R82 2 0R 1 52 2 0D 1 0L E D Y E L L O WD 1 1L E D Y E L L O WD 1 2L E D Y E L L O WD 1 3L E D Y E L L O WD 1 4L E D Y E L L O WD 1 5L E D Y E L L O WD9L E D Y E L L O WD 1 6L E D Y E L L O W 圖 8 仿真結(jié)果 當(dāng)上述程序之一編寫(xiě)好以后,我們需要使用編譯軟件對(duì)其編 譯,得到單片機(jī)所能識(shí)別的二進(jìn)制代碼,然后再用編程器將二進(jìn)制代碼 寫(xiě)到 AT89C51 單片機(jī) 中,最后連接好電路通電,我們就看到 LED1~ LED8 的“流水”效果了。新的編程思路如下:我們?cè)诔绦蛞婚_(kāi)始就給 P1 口送一個(gè)數(shù),這個(gè)數(shù) 本身就讓 先低,其他位為高,然后讓這個(gè)數(shù)據(jù)向高位移動(dòng)不就實(shí)現(xiàn) “流水 ”效果啦?的確如此! 80c51 指令中沒(méi)有讓 P1 數(shù)據(jù)移動(dòng)的指令,但有對(duì)累加器ACC 中數(shù)據(jù)左移或右移的指令, ACC 在指令中常寫(xiě)為 A,累加器 A 數(shù)據(jù)左移指令為 RL A,累加器數(shù)據(jù)右移指令為 RR A,累加器在數(shù)據(jù)傳輸和數(shù)據(jù)處理過(guò)程中作用十分重要,累加器 ACC 為 8 位。在源程序中的字母不區(qū)分大小寫(xiě),也就是說(shuō) start 和 START 是一樣的,請(qǐng)不要用大小寫(xiě)方式去區(qū)分不同的標(biāo)號(hào)。當(dāng)標(biāo)號(hào)作參數(shù)用(如標(biāo)號(hào)作轉(zhuǎn)移地址),在命令后面出現(xiàn)時(shí),必須舍去 ?: 39。由于匯編程序?qū)ξ覀冞€不直觀,所以在編寫(xiě)源程序時(shí),應(yīng) 當(dāng)養(yǎng)成多寫(xiě)注釋的習(xí)慣,這樣有助于今后源程序的閱讀和維護(hù)。 i++)。 //延時(shí) 100ms led = _cror_(led, 1)。 //led 值循環(huán)左移 1 位 } for(i = 0。 i 7。 //延時(shí)毫秒 12M, ms 最大值 255 void main() { uchar led。未夠 7 次繼續(xù)右移 AJMP MAIN DELAY: MOV R5,195 。重置計(jì)數(shù)器,為右移次數(shù) RIGHT: MOV P1,A 。A 送入 P1 口 (初始點(diǎn)亮 ) LCALL DELAY 。 位控法 這是一種比較笨但又最易理解的方法,采用順序程序結(jié)構(gòu),用位指令控制 P1 口的每一個(gè)位輸出高低電平,從而來(lái)控制相應(yīng) LED 燈的亮滅。 中 斷 控 制定 時(shí) / 計(jì) 數(shù) 器 1定 時(shí) / 計(jì) 數(shù) 器 0程 序 存 儲(chǔ) 器 數(shù) 據(jù) 存 儲(chǔ) 器4 K / 8 K 字節(jié) R O M1 2 8 / 2 5 6 字節(jié) R A M串 行 口時(shí) 鐘 電 路C P U總 線(xiàn)控 制并 行 口P 0 P 1 P 2 P 3T X D R X D控 制 圖 5 MCS51 系列單片機(jī)組成框圖 由圖 1 可見(jiàn), MCS51 系列單片機(jī)主要由以下部件通過(guò)片內(nèi)總線(xiàn)連接而成:中央處理器( CPU)、數(shù)據(jù)存儲(chǔ)器( RAM)、程序存儲(chǔ)器( ROM)、并行輸入 /輸出口( P0 口 ~P3 口)、串行口、定時(shí)器 /計(jì)數(shù)器、中斷控制、總線(xiàn)控制及時(shí)鐘電路。 A2A1A0A3A4A5A7A6A0A1A2A3A4A5A6A7A7A6A5A4A3A2A1A0X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 . 01P 1 . 12P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1