历史上的今天
今天是:2024年08月23日(星期五)
2021年08月23日 | 飞思卡尔单片机PIT汇编编程(一)
2021-08-23 来源:eefocus
飞思卡尔单片机(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
史海拾趣
|
通信用接收器的发展趋势是必需在信号刚一进入接收器信号通道时就进行取样,并配备有精确的测试仪,而要达到这个目标就要依赖超高速模拟数字转换器来实现。美国国家半导体首推的 ADC081000 芯片是一款模拟输入带宽高达 1.8 GHz 的 8 位 1GSPS ...… 查看全部问答> |
|
题目要求:货物存放在一个仓库里,由于货物产品规格不容易分辨,所以查找不方便,现在需设计一个电子自动应答器,当在仓库门口发射某个规格的产品需求信号以后,仓库里边相关的货物上携带的应答器便发出声音应答 请各位高手师傅们多多指教啊 ...… 查看全部问答> |
|
要求 1.由DS18B20实现温度采集 2.由12864LCD屏构成温度显示系统 设计要求 启动DS18B20进行12位高精度环境温度采集 利用12864LCD屏构成温度显示系统 具有温度上限声光报警 可以通过键盘设定报警上限值 希望各位大大帮忙!!!急用啊等着交作 ...… 查看全部问答> |
|
我用功放管3886驱动一对三极管对管做扩流,然后三极管的输出再驱动变压器来做最终输出的,但是PNP的三极管老实被击穿,也加了一些保护还是没用,这个三极管几百一个,现在搞的都不赶试,跪求高手帮忙分析下,。… 查看全部问答> |
|
在控制回路里,接触器(包括继电器)线圈电压 选380还是220呢?上网搜索了一番,貌似没有一个权威的答案.本人拙见:控制回路选220V,用电笔查故障很方便,不像380v回路两头都有电,用电笔检测很麻烦。控制回路选380v,有利于缺相保护,毕竟有三分之 ...… 查看全部问答> |
|
有没有能关闭DHCP的API?或者有没有什么程序来实现,因为我最近在做个项目,希望能通过调用程序来实现修改IP,SUBMASK,GATEWAY地址,不希望通过修改WINCE内核的方法来实现目的,修改注册表到是可以修改,但是问题是保存不住信息,因为在板子上的时候,是把WI ...… 查看全部问答> |
|
这些 怎么定义 state_machine rcvdat retval 这些 怎么定义 state_machine rcvdat retval 是串口通信解析的 if(state_machine == 0) // 协 ...… 查看全部问答> |
|
最近准备打样,以前一直在一家大,这次图纸都发过去了,钱已付了,说做不了,找了一大堆借口,说我的图怎么怎么,而我以前在她那里做的一直都是这样,以前没听说什么不行,莫名其妙,希望大家推荐一下比较好的,而已比较诚信的那种。… 查看全部问答> |




