娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM8與匯編語言(6)--8位定時器應(yīng)用之一

發(fā)布者:夢中徐來最新更新時間:2021-10-11 來源: eefocus關(guān)鍵字:STM8  匯編語言  8位定時器 手機看文章 掃描二維碼
隨時隨地手機看文章

STM8單片機中的外設(shè)資源是比較豐富的,定時器有8位的也有16位的,下面的實驗程序,就是利用8位定時器4來進行延時,然后驅(qū)動LED閃爍。


同樣還是利用ST的開發(fā)工具,生成一個匯編程序的框架,然后修改其中的main.asm,修改后的代碼如下。


編譯通過后,下載到開發(fā)板,運行程序,可以看到LED在閃爍,或者用示波器可以在LED引腳上看到方波。


在這里要特別提醒的是,從ST給的手冊上看,這個定時器中的計數(shù)器是一個加1計數(shù)器,但本人在實驗過程中感覺不太對,經(jīng)過反復的實驗,我認為應(yīng)該是一個減1計數(shù)器(也許是我拿的手冊不對,或許是理解上有誤)。例如,當給定時器中的自動裝載寄存器裝入255時,產(chǎn)生的方波頻率最小,就象下面代碼中計算的那樣,產(chǎn)生的方波頻率為30HZ左右。若初始化時給自動裝載寄存器裝入1,則產(chǎn)生的方波頻率最大,大約為3.9K左右。也就是說實際的分頻數(shù)為ARR寄存器的值+1。


stm8/


      #include "mapping.inc"

     

;     #include "STM8S207S8.INC"



; 涉及到的硬件資源

; 下面定義端口D的寄存器地址

PD_ODR   EQU   $500f              

PD_IDR   EQU   $5010

PD_DDR   EQU   $5011

PD_CR1   EQU   $5012

PD_CR2   EQU   $5013



; 定時器4的寄存器定義

TIM4_CR1  EQU   $5340

TIM4_IER  EQU   $5341

TIM4_SR   EQU    $5342

TIM4_EGR  EQU   $5343

TIM4_CNTR  EQU   $5344

TIM4_PSCR  EQU   $5345

TIM4_ARR  EQU   $5346



; 定義堆棧空間的起始位置和結(jié)束位置

stack_start.w  EQU   $stack_segment_start

stack_end.w   EQU    $stack_segment_end





             segment 'rom'         ; 下面開始定義一個段,該段位于ROM中

main.l                        ; 定義復位后的第一條指令的標號(即入口地址)

;

; 首先要初始化堆棧指針

             LDW    X,#stack_end       

             LDW    SP,X



; 下面初始化IO端口

; PD3設(shè)置成推挽輸出

; PD7設(shè)置成懸浮輸入

         LD     A,#08

        LD     PD_DDR,A    ; 將PD3設(shè)置成輸出,PD7設(shè)置成輸入

         LD     A,#08

           LD     PD_CR1,A     ; 將PD3設(shè)置成推挽輸出

         LD     A,#00

              LD     PD_CR2,A            ;

;

; 下面初始化定時器4                       

         LD     A,#$00

         LD     TIM4_IER,A      ; 禁止中斷

         LD     A,#$01    

         LD     TIM4_EGR,A      ; 允許產(chǎn)生更新事件

              LD     A,#$07

              LD     TIM4_PSCR,A      ; 計數(shù)器時鐘=主時鐘/128=2MHZ/128

                                             ; 相當于計數(shù)器周期為64uS

              LD     A,#255

              LD     TIM4_ARR,A       ; 設(shè)定重裝載時的寄存器值,255是最大值

              LD     A,#255

              LD     TIM4_CNTR,A      ; 設(shè)定計數(shù)器的初值

                                              ; 定時周期=(ARR+1)*64=16384uS

                                 ; 產(chǎn)生方波頻率=30.5HZ

                                                                                                                     ;

LD     A,#$01

                                     ; b0 = 1,允許計數(shù)器工作

; b1 = 0,允許更新

LD     TIM4_CR1,A      ; 設(shè)置控制器,啟動定時器

MAIN_LOOP.L

            LD     A,TIM4_SR         ; 讀入定時器4的狀態(tài)

            AND    A,#01             ; 判斷是否產(chǎn)生更新標志

            JREQ   MAIN_LOOP        ; 若沒有,則等待

       LD     A,#0               ; 清除更新標志

       LD     TIM4_SR,A                          

                            

      LD     A,PD_ODR            ; 將LED驅(qū)動信號取反

      XOR    A,#$08

      LD     PD_ODR,A            ; LED閃爍頻率=2MHZ/128/255/2=30.63

    JRA    MAIN_LOOP           ; 無限循環(huán)





  interrupt NonHandledInterrupt

NonHandledInterrupt.l

      iret



; 下面定義中斷向量表    

             segment 'vectit'

             dc.l {$82000000+main}                                                     ; reset

             dc.l {$82000000+NonHandledInterrupt}   ; trap

             dc.l {$82000000+NonHandledInterrupt}   ; irq0

             dc.l {$82000000+NonHandledInterrupt}   ; irq1

             dc.l {$82000000+NonHandledInterrupt}   ; irq2

             dc.l {$82000000+NonHandledInterrupt}   ; irq3

             dc.l {$82000000+NonHandledInterrupt}   ; irq4

                  dc.l {$82000000+NonHandledInterrupt}   ; irq5

             dc.l {$82000000+NonHandledInterrupt}   ; irq6

             dc.l {$82000000+NonHandledInterrupt}   ; irq7

             dc.l {$82000000+NonHandledInterrupt}   ; irq8

[1] [2]
關(guān)鍵字:STM8  匯編語言  8位定時器 引用地址:STM8與匯編語言(6)--8位定時器應(yīng)用之一

上一篇:STM8與匯編語言(5)
下一篇:STM8與匯編語言(7)--8位定時器應(yīng)用之二

推薦閱讀最新更新時間:2025-04-23 21:49

STM8匯編語言(7)--8位定時器應(yīng)用之二
上次寫的是用STM8單片機中的8位定時器作為軟件延時,采用的是查詢方式。在實際系統(tǒng)中,定時器的應(yīng)用,更多的是采用中斷方式,下面的代碼就給出8位定時器在中斷方式下的應(yīng)用。 實驗程序首先初始化驅(qū)動LED的端口,然后初始化8位的定時器4,最后啟動中斷允許,要記住,一定要將中斷服務(wù)程序的入口地址填寫到中斷向量表中,并且要根據(jù)中斷向量號在正確的位置上填寫。 同樣還是利用ST的開發(fā)工具,生成一個匯編程序的框架,然后修改其中的main.asm,修改后的代碼如下。 編譯通過后,下載到開發(fā)板,運行程序,可以看到LED在閃爍,或者用示波器可以在LED引腳上看到方波。 stm8/ #include mapping.inc
[單片機]
基于51單片機的計算器 匯編語言
之前講的計算器都是基于C語言的,接下來講一下基于匯編語言的簡易計算器。 硬件設(shè)計 顯示器仍然是數(shù)碼管,MCU是C51,支持整數(shù)部分的計算 仿真圖: 程序設(shè)計 YJ EQU 50H ;結(jié)果存放 YJ1 EQU 51H ;中間結(jié)果存放 GONG EQU 52H ;功能鍵存放 ORG 0000H START: MOV R3,#0 ;初始化顯示為空 MOV GONG,#0 MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MLOO
[單片機]
基于51單片機的計算器 <font color='red'>匯編語言</font>
使用STM8 Nucleo-64開發(fā)板生成PWM信號
NUCLEO-8S208RB(基于STM8S208RBT6)和NUCLEO-8L152R8(基于STM8L152R8T6)開發(fā)板可用于評估所有STM8S系列和STM8L系列微控制器的主要特性。 本應(yīng)用筆記簡要介紹了如何使用TIM外設(shè)來生成三個PWM信號。 1 應(yīng)用說明 本節(jié)描述了在NUCLEO-8S208RB或NUCLEO-8L152R8開發(fā)板上使用TIM外設(shè)生成三個PWM信號的硬件要求、應(yīng)用程序的原理圖和工作原理。 1.1 硬件要求 NUCLEO-8S208RB或NUCLEO-8L152R8開發(fā)板不需要額外的硬件。 需要一臺示波器作為外部資源。 1.2 應(yīng)用原理圖 兩塊開發(fā)板的應(yīng)用原理圖如下圖所示。 圖1. ST
[單片機]
使用<font color='red'>STM8</font> Nucleo-64開發(fā)板生成PWM信號
STM8 獨立看門狗(IWDG)
STM8獨立看門狗介紹 獨立看門狗模塊可以用于解決處理器因為硬件或軟件的故障所發(fā)生的錯誤。它由一個內(nèi)部的128kHz的LSI阻容振蕩器作為時鐘源驅(qū)動,因此即使是主時鐘失效時它仍然照常工作。 獨立看門狗功能說明 圖24是STM8獨立看門狗模塊的功能框圖。 當在鍵寄存器(IWDG_KR)中寫入數(shù)值0xCC后,獨立看門狗就被啟動了,計數(shù)器開始從它的復位值0xFF開始遞減計數(shù),當計數(shù)減到0x00時就會產(chǎn)生一個復位信號(WDG RESET)。 使用IWDG_PR和IWDG_RLR寄存器配置獨立看門狗。IWDG_PR寄存器是用于選擇驅(qū)動計數(shù)器時鐘的預分頻系數(shù)。每當KEY_REFRESH的數(shù)值(0xAA)寫入到IWDG_KR寄存器時,獨立看門
[單片機]
<font color='red'>STM8</font> 獨立看門狗(IWDG)
STM8 ADC時序圖
STM8 ADC時序圖 如圖149所示,在ADC上電后,在開始精確轉(zhuǎn)換之前ADC需要一個穩(wěn)定時間tSTAB(等于一次轉(zhuǎn)換的時間tCONV),對于之后接下來的轉(zhuǎn)換就不需要穩(wěn)定延時,而且ADON位只需要被置位一次。一次ADC轉(zhuǎn)換需要14個時鐘周期,在轉(zhuǎn)換完成后EOC標志被置位,同時轉(zhuǎn)換結(jié)果保存在10位ADC數(shù)據(jù)寄存器里面。 (圖149:STM8單次模式的時序圖(CONT=0)) (圖150:STM8單次模式的時序圖(CONT=1))
[單片機]
<font color='red'>STM8</font> ADC時序圖
玩轉(zhuǎn)單片機STM8(一)
最初從單片機學習整個計算機系統(tǒng)是個非常正常的階梯學習方法。因為直到今天,計算機系統(tǒng)的那些事,也沒逃離這個最基礎(chǔ)的架構(gòu)。可惜我當年直接跳過了這個過程,直接從intel 486學起的,那時每天帶著無數(shù)的疑問在艱難的前行。 單片機不一定要學習51,其實隨便選一家都是一樣的。從實際出發(fā)要選,便宜的,外圍器件少的,里面功能的,所以為大家挑選了STM8L。 STM8L是個8位單片機,我在論壇中的確看到一些小兄弟在問8位是怎么回事?我至少欣慰這位兄弟確實在思考。通常我說的8位是指CPU計算時,具體點說,不如說加法,是指兩個8位二進制數(shù)相加的能力。同理,32位,就是32位二進制數(shù)相加。 另外,也是最難的部分,這8位單片機的尋范圍可不一定是
[單片機]
玩轉(zhuǎn)單片機<font color='red'>STM8</font>(一)
STM8的實時時鐘PCF8563與紅外進出門提醒器
目錄: 總體設(shè)計 1.基礎(chǔ)硬件DIY設(shè)計 1)整體原理圖 2)外部RTC 電路 3)PCB電路 4)3D_PCB 2.單片機程序設(shè)計 1)PCF8563 I2C通信程序 2)main函數(shù)邏輯 3.效果展示 1)實物電路頂層圖 2)實物電路底層圖 3).防水盒內(nèi)部圖 4)整體效果圖 用到的工具有: 程序 IAR編譯器環(huán)境 altium designer 原理圖 altium designer PCB 實現(xiàn)的小功能有: ①能通過外部兩個紅外對管記人數(shù)并在OLED上顯示 粗略計數(shù)人數(shù) ②能通過外部兩個紅外對 判斷人進入或出去,并發(fā)出語音提示 ag:人進門: 歡迎光臨;人出門: 謝謝惠顧 ③語音整點報時 ④OLED上
[單片機]
<font color='red'>STM8</font>的實時時鐘PCF8563與紅外進出門提醒器
低容量STM8 Modbus協(xié)議移植與裁剪
1.freeModbus開源包的下載 一般STM8用的開發(fā)環(huán)境是IAR,所以這里我們就講在IAR下移植FreeModbus, 下載freemodbus-v1.5.0,官方下載地址http://www.freemodbus.org/找到Download 點擊freemodbus-v1.5.zip即可下載。 2.freeModbus開源包的簡介 打開文件夾的目錄如下 然后我們打開主要的文件夾modbus 我們可以看到有ascii、functions、include、rtu、tcp以及mb.c源文件 Ascii Modbus ascii通信方式相關(guān)文件夾, Rtu Modbus Rtu 通信方式和CRC校驗
[單片機]
低容量<font color='red'>STM8</font> Modbus協(xié)議移植與裁剪
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 抚宁县| 永康市| 丹阳市| 广安市| 湖口县| 江孜县| 蚌埠市| 无棣县| 山丹县| 石棉县| 永和县| 桂阳县| 马龙县| 昂仁县| 南郑县| 禄丰县| 黎平县| 北川| 乌拉特中旗| 广州市| 山阳县| 克什克腾旗| 长葛市| 儋州市| 宜都市| 元朗区| 搜索| 仙居县| 梅州市| 宁城县| 洞头县| 类乌齐县| 都昌县| 罗源县| 周口市| 义马市| 郎溪县| 徐汇区| 包头市| 林甸县| 高唐县|