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

STM8與匯編語言(7)--8位定時器應用之二

發布者:溫暖心情最新更新時間:2021-10-11 來源: eefocus關鍵字:STM8  匯編語言  8位定時器 手機看文章 掃描二維碼
隨時隨地手機看文章

上次寫的是用STM8單片機中的8位定時器作為軟件延時,采用的是查詢方式。在實際系統中,定時器的應用,更多的是采用中斷方式,下面的代碼就給出8位定時器在中斷方式下的應用。


實驗程序首先初始化驅動LED的端口,然后初始化8位的定時器4,最后啟動中斷允許,要記住,一定要將中斷服務程序的入口地址填寫到中斷向量表中,并且要根據中斷向量號在正確的位置上填寫。


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


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


stm8/


      #include "mapping.inc"

     

;     #include "STM8S207S8.INC"


; 涉及到的硬件資源

; LED1定義在PD3



; 下面定義端口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







; 定義堆??臻g的起始位置和結束位置

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設置成推挽輸出

; PD7設置成懸浮輸入

         LD     A,#08

         LD     PD_DDR,A       ; 將PD3設置成輸出,PD7設置成輸入

         LD     A,#08

         LD     PD_CR1,A       ; 將PD3設置成推挽輸出

         LD     A,#00

         LD     PD_CR2,A       ;

;

; 下面初始化定時器4                       

         LD     A,#$01    

         LD     TIM4_EGR,A     ; 允許產生更新事件

         LD     A,#$07

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

                                                      ; 相當于計數器周期為64uS

         LD     A,#255

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

                

         LD     A,#255

         LD     TIM4_CNTR,A    ; 設定計數器的初值

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

                                                                                                            

        LD     A,#$01         ; b0 = 1,允許計數器工作

                                   ; b1 = 0,允許更新



         LD     TIM4_CR1,A     ; 設置控制器,啟動定時器

         LD     A,#$01        ; 允許更新中斷

    LD     TIM4_IER,A     ;

         RIM                 ; 允許CPU全局中斷

                            

MAIN_LOOP.L

         JRA    MAIN_LOOP      ; 進入無限循環



; 下面是定時器4的中斷服務程序

TIMER4_ISR.L                          

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

         LD     TIM4_SR,A                             

         LD     A,PD_ODR       ; 將LED驅動信號取反

         XOR    A,#$08

         LD     PD_ODR,A       ; LED閃爍頻率=2MHZ/128/256/2=30.5

         IRET                 ; 中斷返回





  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

             dc.l {$82000000+NonHandledInterrupt}   ; irq9

             dc.l {$82000000+NonHandledInterrupt}   ; irq10

             dc.l {$82000000+NonHandledInterrupt}   ; irq11

             dc.l {$82000000+NonHandledInterrupt}   ; irq12

[1] [2]
關鍵字:STM8  匯編語言  8位定時器 引用地址:STM8與匯編語言(7)--8位定時器應用之二

上一篇:STM8與匯編語言(6)--8位定時器應用之一
下一篇:STM8與匯編語言(8)--16位定時器應用

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

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

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 十堰市| 密山市| 平安县| 沅江市| 安溪县| 海宁市| 青铜峡市| 清原| 维西| 黑水县| 腾冲县| 石狮市| 阿拉尔市| 宁都县| 墨玉县| 古交市| 阳春市| 赣榆县| 思南县| 延吉市| 马关县| 五常市| 南陵县| 双流县| 清苑县| 登封市| 拉萨市| 怀柔区| 湖口县| 海丰县| 白朗县| 沙河市| 双鸭山市| 封开县| 普定县| 麻江县| 辛集市| 溧水县| 南京市| 邢台市| 突泉县|