飞思卡尔单片机PIT汇编编程(一)

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

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

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

开始如下工作:

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

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

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

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

上图中的标号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
时间: 2024-11-09 08:18:45

飞思卡尔单片机PIT汇编编程(一)的相关文章

飞思卡尔单片机中逻辑地址和全局地址关系

在编写P-Flash时,我们首先需要搞明白飞思卡尔内部Flash memory的管理机制,这其中就涉及到我们访问Flash是采用逻辑地址还是全局地址,逻辑地址是由单片机内部的内存管理机制决定的,而全局地址对应的是物理地址.逻辑地址最终都会映射到物理地址上的某段区间. 关于逻辑地址和物理地址的关系,可以参考以下文章<programing flash memory in freescale s08/s12/codefire mcus family>  链接:http://www.docin.com

飞思卡尔单片机P&amp;E开发工具硬件及软件

原文链接: http://blog.sina.com.cn/s/blog_8ebff8d7010121tm.html 1.HC(S)08系列 开发机硬件:USB-ML-12 CYCLONE PRO USB-ML-UNIVERSAL USB-ML-UNIVERSAL FX 支持发软件:烧录软件 PROGHCS08 调试软件 ICDHCS08 软件包   PKGHCS08 2.HC(S)12(X)系列 开发机硬件:USB-ML-12 CYCLONE PRO USB-ML-UNIVERSAL USB-

飞思卡尔芯片解密 MC9S08GB60 芯片特点

MC9S08GB60芯片的特点①60K 带块保护和安全机制的可片上在线编程的FLASH 存储器②4K 片上随机存储器(RAM)③8 通道,10 位模数转换器(ATD)④两个串行通信接口模块(SCI)⑤串行外设接口模块(SPI)⑥时钟源可选晶体振荡器.陶瓷谐振器.外部时钟或经精确NVM 校准的内部时钟⑦高达100 kbps 的IIC 总线(IIC)⑧一个3 通道和一个5 通道的16 位定时器/脉宽调制器(TPM)模块,每个通道可以选择输入捕捉.输出比较和边缘对齐PWM 等功能.每个定时模块的每个通

freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(一)之时钟设置

Flash擦写的内容,个人做HC9S12系列单片机时觉得应该是各模块内容中最难而且是最麻烦的一步了.只有能够对Flash进行擦写以后,所做的Bootloader才有真正手段将串口或者其他通讯手段接收到的数据或者程序写入Flash中进行程序或者数据的更新.当初做Flash的擦写也遇到了很多问题,网上搜罗下来也没有合适的帖子能够详细的将整个过程或者学习的思路以及最后实现的程序详细的加以解析,而本博文就是基于这个出发点来写的.技术本身应当是共享的才能真正让社会进步,不是么? 关于单片机Flash的基本

freescale飞思卡尔 HCS12 系列单片机bootloader详解(三)

在完成内存映射的内容后,接下来我们将进入一个简单Bootloader的实际设计中来.在第一节内容中,我们已经简单介绍了bootlaoder的作用,它实际上就是在单片机重启过程中的一个步骤:如果有bootloader的启动信号,则进入bootloader模式开始新程序的接收与flash的擦写,若没有bootloader的启动信号,则直接进入用户程序执行用户程序内容. bootloader的启动信号一般有如下两种: 1)外部引脚接地或者拉高电平:每次启动时先监测某一已经设定的引脚是否已经被操作到了b

NXP 飞思卡尔 S12Z 系列单片机 SCI 设置(解决SCI已经设置完成,但却无法通信的问题)

近日在使用了飞思卡尔S12Z设置SCI后总是不出数据,明明按照前代单片机S12Z的方法设置好了,为什么又不能用了呢? 下面是我简单对SCI1的设置,仅仅这样设置是出不来数据的: 1 SCI1BD = GLOBAL_BUS_CLOCK / SCI1_BAUD_RATE; 2 SCI1CR2 = SCI1CR2_RE_MASK + SCI1CR2_TE_MASK + SCI1CR2_RIE_MASK; 在上面的设置中我仅仅设置了SCI1的设置,假设了S12Z与S12一样,不存在同一口多个功能复用的情

飞思卡尔智能车电磁组分区算法介绍

写在之前的话: 1.目前我是一名在校学生,这也是我第一次写博客,不周之处,请多谅解: 2.此算法并非原创,借鉴自山东德州学院第八届白杨队(PS:个人看法,对于一些人把别人的开源东西改头换面一下就说是自己的原创行为十分鄙视): 3.对于此算法的理解和说明并非纸上谈兵,算法已经被我运用到了小车比赛中并取得好的成绩(具体就不多说了,比赛时车莫名其妙坏了,比赛前调试的速度绝对能进国赛,比较遗憾),总之这算法是我尝试过的最好的算法: 4.这一次所介绍的只是路径算法和一些知识普及,后面有时间会介绍其余部分算

独立、原创、总结、分享、行动——由海滨学生参观实验室及“飞思卡尔”杯智能车比赛想到的

题记:以下内容,都是老师在和学生交流过程中发现的现象,这里主要指出了存在的问题和可能的解决方法.其实同学们也有很多的优点,这里没有一一叙述.本着"有则改之,无则加勉"的态度分享自己的感受. 今天海滨学院环境专业大二学生,在曹瑞雪博士带领下来主校区参观,其中有一个点为我们海洋遥感与信息技术实验室. 接到曹老师电话(还有20分钟到达),立即把楼顶天线的门打开,同时走了一下参观的路线.在7楼恰好看到有同学在试车(参加智能车比赛的学生,7楼是科技园的一个智能车训练场地),简单的交流了几句,了解

痞子衡嵌入式:飞思卡尔i.MX RT系列微控制器启动篇(4)- Flashloader初体验(blhost)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Flashloader. 在上一篇文章 飞思卡尔i.MX RT系列微控制器启动篇(3)- Serial Downloader模式(sdphost, mfgtool) 里痞子衡为大家介绍了i.MXRT Boot的Serial Downloader模式,这种模式主要是用来引导启动Flashloader,那么Flashloader到底具有哪些功能?这是本篇文章痞子衡要为大家解惑的主题. 痞子衡在前面提过F