飞思卡尔单片机c语言编程详解,飞思卡尔单片机PIT汇编编程(一)

本文记录了一位新手学习飞思卡尔单片机XS128系列汇编编程的过程,重点探讨了中断机制和定时器配置。通过分析手册和例程,指出在配置中断向量表时的常见错误,并解释了为何不能使用MOVW指令修改只读存储区。同时,强调了清除中断标志位的重要性。附带了一个简单的汇编程序,展示了如何设置定时器寄存器。
摘要由CSDN通过智能技术生成

飞思卡尔单片机(XS128系列)单片机汇编编程(一)

本人就是一个菜鸟,从菜鸟学习汇编编程;汇编也没想象中的复杂和难懂,细细品味还是挺有意思的。就当刷着玩吧,就学起了汇编(这一直是我的一大心病),慢慢学吧,就当了却了我的一个愿望。作为我的第一个汇编程序,仔细缕缕编写的过程。好了,废话不说了,开始正题。

手头上的资料:飞思卡尔单片机,调试器以及手册(欧了,就这三样),对了,下一个飞思卡尔单片机的汇编指令集哦。

开始如下工作:

首先熟悉中断机制,确定我们要在哪部分编程,以及编程之后起到的效果,然后才能更好地编程。具体机制参考下图:

0818b9ca8b590ca3270a3433284dd417.png

编程部分:参考手册找到PIT部分,根据以往C语言编程的经历,定时器主要通过配置相应的寄存器来实现,为此我们配置所需的寄存器,里面的寄存器太多了(吧啦吧啦),

其实,每个单片机都会有相应模块的功能框图。如下图所示:

0818b9ca8b590ca3270a3433284dd417.png

在该部分,手册里面给了一个例程:

0818b9ca8b590ca3270a3433284dd417.png

上图中的标号1处之所以箭头用黄色,是因为这是错的(我也被坑的很惨)。在给的附件程序中会有应该如何修改(最后);其实,仔细想想也就知道了,中断向量表处于只读存储区中,一句MOVW怎么能将它就该呢(哎)。

上图中的标号3处的MOVB  #$01,PITTF这句必须要有,是为了将相应的标志清空的(此处和51有区别,此处纠结了很长时间)。

下面是我的程序附件:

;**************************************************************

;* This stationery serves as the framework for a *

;* user application. For a more comprehensive program that *

;* demonstrates the more advanced functionality of this *

;* processor, please see the demonstration applications *

;* located in the examples subdirectory of the *

;* Freescale CodeWarrior for the HC12 Program directory *

;**************************************************************

; Include derivative-specific definitions

INCLUDE 'derivative.inc'

; export symbols

XDEF Entry, _Startup, main

; we use export 'Entry' as symbol. This allows us to

; reference 'Entry' either in the linker .prm file

; or from C/C++ later on

XREF __SEG_END_SSTACK ; symbol defined by the linker for the end of the stack

; variable/data section

MY_EXTENDED_RAM: SECTION

; Insert here your data definition.

; code section

MyCode: SECTION

main:

_Startup:

Entry:

LDS #__SEG_END_SSTACK ; initialize the stack pointer pu

SEI

;**********关看门狗

CLR COPCTL

;*********定时器0寄存器设置

MOVB #$ff,DDRB

MOVB #$55,PORTB

BCLR PITCFLMT,#128

BSET PITCE,#1

BCLR PITMUX,#1

LDAB #244

STAB PITMTLD0

LDD #65535

STD PITLD0

BSET PITCFLMT,#128

BSET PITTF,#1

BSET PITINTE,#1

CLRX

CLI ; enable interrupts

MainLoop: BRA MainLoop

CH0_ISR:

COM PORTB

BSET PITTF ,#1

RTI

ORG $FF7A

FDB CH0_ISR

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值