首先要寫(xiě)入單片機(jī)的頭函數(shù),定義單片機(jī)P1口的8個(gè)管腳,讓他們分別代表流水燈的8個(gè)led。寫(xiě)一個(gè)大約一小時(shí)的延時(shí)函數(shù),為了清楚的看到流水燈的、效果。
成都創(chuàng)新互聯(lián)公司始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營(yíng)理念,通過(guò)多達(dá)10多年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)整合營(yíng)銷推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:白烏魚(yú)等企業(yè),備受客戶表?yè)P(yáng)。
crol()是循環(huán)左移,在匯編相當(dāng)于多個(gè) RL A,的組合。
C51系列單片機(jī)中_crol_指令是循環(huán)左移函數(shù),_cror_是循環(huán)右移函數(shù),這是51中特有的指令,別的類型單片機(jī)就不能使用了。易于程序的移植和通用性考慮個(gè)人比較推薦用 左移, 右移這兩個(gè)C中的移位符號(hào)。
你的led燈是共陽(yáng)的,從你給的條件可以判斷。p1=0xfe,即最低位為‘0’,故點(diǎn)亮的是p0引腳所對(duì)應(yīng)的led燈,也就是你所謂的c0。所以你的程序沒(méi)有問(wèn)題啊。
1、循環(huán)左移n: (a(N-n))|(an)循環(huán)右移n: (a(N-n))|(an)C語(yǔ)言的位運(yùn)算功能是其區(qū)別于其他大多數(shù)高級(jí)程序設(shè)計(jì)語(yǔ)言的特色之一,用它可以方便實(shí)現(xiàn)一些特殊功能,靈活掌握是用C程序編寫(xiě)系統(tǒng)程序的基礎(chǔ)。
2、加入一個(gè)頭文件INTRINS.H使用里面的循環(huán)左移、循環(huán)右移函數(shù)就可以了。這兩個(gè)函數(shù)分別是_crol_()和_cror_()如A=10100000即0xA0。
3、你的led燈是共陽(yáng)的,從你給的條件可以判斷。p1=0xfe,即最低位為‘0’,故點(diǎn)亮的是p0引腳所對(duì)應(yīng)的led燈,也就是你所謂的c0。所以你的程序沒(méi)有問(wèn)題啊。
intrins.h一般出現(xiàn)在C51單片機(jī)編程中,一般程序中需要使用到空指令_nop_();字符循環(huán)移位指令_crol_等時(shí)使用。
這個(gè)函數(shù)是延時(shí)一個(gè)機(jī)器周期的意思,它包含在頭文件intrins.h中,只要程序應(yīng)用到_nop_(),就需要有頭文件intrins.h的聲明。
在單片機(jī)c語(yǔ)言中直接調(diào)用庫(kù)函數(shù)即可,具體如下:includeintrins.h // 聲明了void _nop_(void);_nop_(); // 產(chǎn)生一條NOP指令。
includereg5h是52單片機(jī)的頭文件;#includeintrins.h也是頭文件,且這個(gè)頭文件主要是包含了有關(guān)51單片機(jī)的幾條匯編語(yǔ)句的C語(yǔ)言調(diào)用接口,是直接編譯成對(duì)應(yīng)的匯編語(yǔ)句的。
再發(fā)一個(gè)10個(gè)燈的,不過(guò)函數(shù)是IROL / _crol_不好實(shí)現(xiàn),我用_irol_實(shí)現(xiàn)的。
_crol_不好實(shí)現(xiàn),我用_irol_實(shí)現(xiàn)的。延時(shí)部分自己修改。
可以通過(guò)左移函數(shù)_crol_()和右移函數(shù)_cror_()來(lái)實(shí)現(xiàn)LED等的來(lái)回流動(dòng)。
用精確定時(shí)的方法,設(shè)置流水燈運(yùn)行時(shí)的時(shí)間間隔,延時(shí)時(shí)間為500MS。#include reg5h首先寫(xiě)出單片機(jī)的頭函數(shù)。#include intrins.h輸入位移函數(shù)。unsigned int count=0,led;定義函數(shù)。
_crol_是字符循環(huán)左移,就是只左移低8位,高位舍掉,且左移出的第7位會(huì)移到第0位,是循環(huán)的。而只是純粹地左移。
crol是character to rotate left的縮寫(xiě),也就是字符循環(huán)左移的意思,教你怎么找KEIL自帶的庫(kù)函數(shù)吧,里面有所有庫(kù)函數(shù)的調(diào)用說(shuō)明和例子。
第一個(gè)c是circle的第一個(gè)字母,循環(huán)的意思。第二個(gè)字母是roll的字母縮寫(xiě),滾動(dòng)、移動(dòng)的意思。第三個(gè)是of的縮寫(xiě)。第四個(gè)l是left,向左的意思,第四個(gè)是r,就是right,向右的意思。
C51系列單片機(jī)中_crol_指令是循環(huán)左移函數(shù),_cror_是循環(huán)右移函數(shù),這是51中特有的指令,別的類型單片機(jī)就不能使用了。易于程序的移植和通用性考慮個(gè)人比較推薦用 左移, 右移這兩個(gè)C中的移位符號(hào)。
例如,如果有一個(gè)二進(jìn)制數(shù)字 outdata = 10100110,執(zhí)行 crol(outdata,1) 操作后,得到的結(jié)果是 01001101。具體算法如下:將數(shù)字轉(zhuǎn)換為二進(jìn)制表示。將二進(jìn)制位數(shù)限制在 8 位內(nèi)。將數(shù)字左移指定的位數(shù)。
1、故點(diǎn)亮的是p0引腳所對(duì)應(yīng)的led燈,也就是你所謂的c0。所以你的程序沒(méi)有問(wèn)題啊。
2、在左邊還有個(gè)sec 寄存器,可以看到執(zhí)行到當(dāng)期指令時(shí)所花的時(shí)間。不過(guò)首先你要去project option里面把晶振頻率設(shè)置成和你單片機(jī)一樣的。選擇變量i,右鍵,點(diǎn)擊add to watch 1。這里是看變量i的變化的。
3、用個(gè)移位處理就行了 set(void) { 流水燈.c * 描述 : 該程序?qū)崿F(xiàn)LED的流水燈顯示。
4、所以移動(dòng)到最后,aa就等于0了。而_crol_是循環(huán)左移,aa的最高位左移后會(huì)寫(xiě)入aa的最低位,所以燈看起來(lái)是流動(dòng)的。
5、_crol_不好實(shí)現(xiàn),我用_irol_實(shí)現(xiàn)的。延時(shí)部分自己修改。
6、想用這個(gè)函數(shù),只要先在程序的開(kāi)頭加入一條引用聲明就可以了。includeINTRINS.H 因?yàn)開(kāi)crol_這個(gè)函數(shù)是包含在INTRINS.H文件之中的函數(shù)。
當(dāng)前名稱:c語(yǔ)言crol函數(shù) c語(yǔ)言crc
文章路徑:http://chinadenli.net/article22/diopscc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、云服務(wù)器、商城網(wǎng)站、網(wǎng)站策劃、軟件開(kāi)發(fā)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)