freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

stm8的c語(yǔ)言編程-資料下載頁(yè)

2025-08-18 19:30本頁(yè)面
  

【正文】 K_SWR = 0xE1。 // 選擇芯片內(nèi)部的16MHZ的RC振蕩器為主時(shí)鐘 for(。) // 進(jìn)入無(wú)限循環(huán) { // 下面設(shè)置CPU時(shí)鐘分頻器,使得CPU時(shí)鐘=主時(shí)鐘 // 通過(guò)發(fā)光二極管,可以看出,程序運(yùn)行的速度確實(shí)明顯提高了 CLK_CKDIVR = 0x08。 // 主時(shí)鐘 = 16MHZ / 2 // CPU時(shí)鐘 = 主時(shí)鐘 = 8MHZ for(i=0。i10。i++) { PD_ODR = 0x08。 DelayMS(100)。 PD_ODR = 0x00。 DelayMS(100)。 } // 下面設(shè)置CPU時(shí)鐘分頻器,使得CPU時(shí)鐘=主時(shí)鐘/4 // 通過(guò)發(fā)光二極管,可以看出,程序運(yùn)行的速度確實(shí)明顯下降了 CLK_CKDIVR = 0x1A。 // 主時(shí)鐘 = 16MHZ / 8 // CPU時(shí)鐘 = 主時(shí)鐘 / 4 = 500KHZ for(i=0。i10。i++) { PD_ODR = 0x08。 DelayMS(100)。 PD_ODR = 0x00。 DelayMS(100)。 } }} STM8的C語(yǔ)言編程(11)-- 切換時(shí)鐘源STM8單片機(jī)的時(shí)鐘源非常豐富,芯片內(nèi)部既有16MHZ的高速RC振蕩器,也有128KHZ的低速RC振蕩器,外部還可以接一個(gè)高速的晶體振蕩器。在系統(tǒng)運(yùn)行過(guò)程中,可以根據(jù)需要,自由地切換。單片機(jī)復(fù)位后,首先采用的是內(nèi)部的高速RC振蕩器,且分頻系數(shù)為8,因此CPU的上電運(yùn)行的時(shí)鐘頻率為2MHZ。切換時(shí)鐘源,主要涉及到的寄存器有:主時(shí)鐘切換寄存器CLK_SWR和切換控制寄存器CLK_SWCR。主時(shí)鐘切換寄存器的復(fù)位值為0xe1,表示切換到內(nèi)部的高速RC振蕩器上。當(dāng)往該寄存器寫(xiě)入0xb4時(shí),表示切換到外部的高速晶體振蕩器上。在實(shí)際切換過(guò)程中,應(yīng)該先將切換控制寄存器中的SWEN(第1位)設(shè)置成1,然后設(shè)置CLK_SWCR的值,最后要判斷切換控制寄存器中的SWIF標(biāo)志是否切換成功。下面的實(shí)驗(yàn)程序首先將主時(shí)鐘源切換到外部的晶體振蕩器上,振蕩頻率為8MHZ,然后,然后快速閃爍LED指示燈。接著,將主時(shí)鐘源又切換到內(nèi)部的振蕩器上,振蕩頻率為2MHZ,然后再慢速閃爍LED指示燈。通過(guò)觀察LED指示燈的閃爍頻率,可以看到,同樣的循環(huán)代碼,由于主時(shí)鐘源的改變的改變,閃爍頻率和時(shí)間長(zhǎng)短都發(fā)生了變化。同樣還是利用ST的開(kāi)發(fā)工具,生成一個(gè)C語(yǔ)言程序的框架,修改后的代碼如下。// 程序描述:通過(guò)切換CPU的主時(shí)鐘源,來(lái)改變CPU的運(yùn)行速度include // 函數(shù)功能:延時(shí)函數(shù)// 輸入?yún)?shù):ms 要延時(shí)的毫秒數(shù),這里假設(shè)CPU的主頻為2MHZ// 輸出參數(shù):無(wú)// 返 回 值:無(wú)// 備 注:無(wú)void DelayMS(unsigned int ms){ unsigned char i。 while(ms != 0) { for(i=0。ii++) { } for(i=0。i75。i++) { } ms。 } }main(){ int i。 // 將PD3設(shè)置成推挽輸出,以便推動(dòng)LED PD_DDR = 0x08。 PD_CR1 = 0x08。 PD_CR2 = 0x00。 // 啟動(dòng)外部高速晶體振蕩器 CLK_ECKR = 0x01。 // 允許外部高速振蕩器工作 while((CLK_ECKR amp。 0x02) == 0x00)。 // 等待外部高速振蕩器準(zhǔn)備好 // 注意,復(fù)位后CPU的時(shí)鐘源來(lái)自內(nèi)部的RC振蕩器 for(。) // 進(jìn)入無(wú)限循環(huán) { // 下面將CPU的時(shí)鐘源切換到外部的高速晶體振蕩器上,在開(kāi)發(fā)板上的頻率為8MHZ // 通過(guò)發(fā)光二極管,可以看出,程序運(yùn)行的速度確實(shí)明顯提高了 CLK_SWCR = CLK_SWCR | 0x02。 // SWEN 1 CLK_SWR = 0xB4。 // 選擇芯片外部的高速振蕩器為主時(shí)鐘 while((CLK_SWCR amp。 0x08) == 0)。 // 等待切換成功 CLK_SWCR = CLK_SWCR amp。 0xFD。 // 清除切換標(biāo)志 for(i=0。i10。i++) // LED高速閃爍10次 { PD_ODR = 0x08。 DelayMS(100)。 PD_ODR = 0x00。 DelayMS(100)。 } // 下面將CPU的時(shí)鐘源切換到內(nèi)部的RC振蕩器上,由于CLK_CKDIVR的復(fù)位值為0x18 // 所以16MHZ的RC振蕩器要經(jīng)過(guò)8分頻后才作為主時(shí)鐘,因此頻率為2MHZ // 通過(guò)發(fā)光二極管,可以看出,程序運(yùn)行的速度確實(shí)明顯下降了 CLK_SWCR = CLK_SWCR | 0x02。 // SWEN 1 CLK_SWR = 0xE1。 // 選擇HSI為主時(shí)鐘源 while((CLK_SWCR amp。 0x08) == 0)。 // 等待切換成功 CLK_SWCR = CLK_SWCR amp。 0xFD。 // 清除切換標(biāo)志 for(i=0。i10。i++) // LED低速閃爍10次 { PD_ODR = 0x08。 DelayMS(100)。 PD_ODR = 0x00。 DelayMS(100)。 } }} STM8的C語(yǔ)言編程(12)-- AD轉(zhuǎn)換在許多的單片機(jī)應(yīng)用系統(tǒng)中,都需要A/D轉(zhuǎn)換器,將模擬量轉(zhuǎn)換成數(shù)字量。在STM8單片機(jī)中,提供的是10位的A/D,通道數(shù)隨芯片不同而不同,少的有4個(gè)通道,多的則有16個(gè)通道。下面的實(shí)驗(yàn)程序首先對(duì)A/D輸入進(jìn)行采樣,然后將采樣結(jié)果的高8位(丟棄最低的2位),作為延時(shí)參數(shù)去調(diào)用延時(shí)子程序,然后再去驅(qū)動(dòng)LED控制信號(hào)。因此不同的采樣值,決定了LED的閃爍頻率。當(dāng)旋轉(zhuǎn)ST三合一開(kāi)發(fā)板上的電位器時(shí),可以看到LED的閃爍頻率發(fā)生變化。同樣還是利用ST的開(kāi)發(fā)工具,生成一個(gè)C語(yǔ)言程序的框架,修改后的代碼如下。// 程序描述:通過(guò)AD模塊,采樣電位器的電壓,改變LED的閃爍頻率include // 函數(shù)功能:延時(shí)函數(shù)// 輸入?yún)?shù):ms 要延時(shí)的毫秒數(shù),這里假設(shè)CPU的主頻為2MHZ// 輸出參數(shù):無(wú)// 返 回 值:無(wú)// 備 注:無(wú)void DelayMS(unsigned int ms){ unsigned char i。 while(ms != 0) { for(i=0。ii++) { } for(i=0。i75。i++) { } ms。 } }main(){ int i。 // 將PD3設(shè)置成推挽輸出,以便推動(dòng)LED PD_DDR = 0x08。 PD_CR1 = 0x08。 PD_CR2 = 0x00。 // 初始化A/D模塊 ADC_CR2 = 0x00。 // A/D結(jié)果數(shù)據(jù)左對(duì)齊 ADC_CR1 = 0x00。 // ADC時(shí)鐘=主時(shí)鐘/2=1MHZ // ADC轉(zhuǎn)換模式=單次 // 禁止ADC轉(zhuǎn)換 ADC_CSR = 0x03。 // 選擇通道3 ADC_TDRL = 0x20。 for(。) // 進(jìn)入無(wú)限循環(huán) { ADC_CR1 = 0x01。 // CR1寄存器的最低位置1,使能ADC轉(zhuǎn)換 for(i=0。i100。i++)。 // 延時(shí)一段時(shí)間,至少7uS,保證ADC模塊的上電完成 ADC_CR1 = ADC_CR1 | 0x01。 // 再次將CR1寄存器的最低位置1 // 使能ADC轉(zhuǎn)換 while((ADC_CSR amp。 0x80) == 0)。 // 等待ADC結(jié)束 i = ADC_DRH。 // 讀出ADC結(jié)果的高8位 DelayMS(i)。 // 延時(shí)一段時(shí)間 PD_ODR = PD_ODR ^ 0x08。 // 將PD3反相 }} STM8的C語(yǔ)言編程(13)-- 蜂鳴器蜂鳴器是現(xiàn)在單片機(jī)應(yīng)用系統(tǒng)中很常見(jiàn)的,常用于實(shí)現(xiàn)報(bào)警功能。為此STM8特別集成了蜂鳴器模塊,應(yīng)用起來(lái)非常方便。在應(yīng)用蜂鳴器模塊時(shí),首先要打開(kāi)片內(nèi)的低速RC振蕩器(當(dāng)然也能使用外部的高速時(shí)鐘),其頻率為128KHZ。然后通過(guò)設(shè)置蜂鳴器控制寄存器BEEP_CSR中的BEEPDIV[4:0]來(lái)獲取8KHZ的時(shí)鐘,再通過(guò)BEEPSEL最終產(chǎn)生1KHZ或2KHZ或4KHZ的蜂鳴器時(shí)鐘,最后使能該寄存器中的BEEPEN位,產(chǎn)生蜂鳴器的輸出。下面的實(shí)驗(yàn)程序首先初始化低速振蕩器,然后啟動(dòng)蜂鳴器,然后關(guān)閉蜂鳴器。同樣還是利用ST的開(kāi)發(fā)工具,生成一個(gè)匯編程序的框架,修改后的代碼如下。// 程序描述:?jiǎn)?dòng)單片機(jī)中的蜂鳴器模塊include // 函數(shù)功能:延時(shí)函數(shù)// 輸入?yún)?shù):ms 要延時(shí)的毫秒數(shù),這里假設(shè)CPU的主頻為2MHZ// 輸出參數(shù):無(wú)// 返 回 值:無(wú)// 備 注:無(wú)void DelayMS(unsigned int ms){ unsigned char i。 while(ms != 0) { for(i=0。ii++) { } for(i=0。i75。i++) { } ms。 } }main(){ int i。 CLK_ICKR = CLK_ICKR | 0x08。 // 打開(kāi)芯片內(nèi)部的低速振蕩器LSI while((CLK_ICKR amp。 0x10) == 0)。 // 等待振蕩器穩(wěn)定 // 通過(guò)設(shè)置蜂鳴器控制寄存器,來(lái)打開(kāi)蜂鳴器的功能 // 蜂鳴器控制寄存器的設(shè)置: // BEEPDIV[1:0] = 00 // BEEPDIV[4:0] = 0e // BEEPEN = 1 // 蜂鳴器的輸出頻率 = Fls / ( 8 * (BEEPDIV + 2) )= 128K / (8 * 16) = 1K BEEP_CSR = 0x2e。 for(i=0。i10。i++) { DelayMS(250)。 } BEEP_CSR = 0x1e。 // 關(guān)閉蜂鳴器 while(1)。} STM8的C語(yǔ)言編程(14)-- PWM在單片機(jī)應(yīng)用系統(tǒng)中,也常常會(huì)用到PWM信號(hào)輸出,例如電機(jī)轉(zhuǎn)速的控制?,F(xiàn)在很多高檔的單片機(jī)也都集成了PWM功能模塊,方便用戶的應(yīng)用。對(duì)于PWM信號(hào),主要涉及到兩個(gè)概念,一個(gè)就是PWM信號(hào)的周期或頻率,另一個(gè)就是PWM信號(hào)的占空比。例如一個(gè)頻率為1KHZ,占空比為30%,有效信號(hào)為1的PWM信號(hào),在用示波器測(cè)量時(shí),就是高電平的時(shí)間為300uS,低電平的時(shí)間為700uS的周期波形。在單片機(jī)中實(shí)現(xiàn)PWM信號(hào)的功能模塊,實(shí)際上就是帶比較器的計(jì)數(shù)器模塊。首先該計(jì)數(shù)器循環(huán)計(jì)數(shù),例如從0到N,那么這個(gè)N就決定了PWM的周期,PWM周期=(N+1)*計(jì)數(shù)器時(shí)鐘的周期。在計(jì)數(shù)器模塊中一定還有一個(gè)比較器,比較器有2個(gè)輸入,一個(gè)就是計(jì)數(shù)器的當(dāng)前值,另一個(gè)是可以設(shè)置的數(shù),這個(gè)數(shù)來(lái)自一個(gè)比較寄存器。當(dāng)計(jì)數(shù)器的值小于比較寄存器的值時(shí),輸出為1(可以設(shè)置為0),當(dāng)計(jì)數(shù)器的值大于或等于比較寄存器的值時(shí),輸出為0(也可設(shè)置為1,與前面對(duì)應(yīng))。了解了這個(gè)基本原理后,我們就可以使用STM8單片機(jī)中的PWM模塊了。下面的實(shí)驗(yàn)程序首先將定時(shí)器2的通道2設(shè)置成PWM輸出方式,然后通
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1