|
MC68HC908JL8
匠人应用手记
系统缺省时不会产生LST文件.如果需要查看LST文件,可以:
1. 选择菜单[edit]->[P&E ICD SETTINGS]
2. 在弹出窗口中选择[TARGET]->[ASSEMBLER FOR ……](汇编);或[COMPILER FOR ……](C)
3. 在窗口右边点击[options]
4. 在新弹出窗口中切换到[OUTPUT]页
5. 在[generate listing file]前打勾即可
huangxd 发表于 2005-7-11 10:28 侃单片机
一个大的单片机程序往往包含很多模块,我是这样组织的
1。每一个C源文件都要建立一个与之名字一样的H文件,里面仅仅包括该C文件的函数的声明,其他的什么也不会有,比如变量的定义啊等等不应该有。
2。建立一个所有的文件都要共同使用的头文件,里面当然就是单片机的管脚使用的定义,还有里面放那些需要的KEIL系统的头文件,比如 include<reg52.h>,#i nclude<absacc.h>等等,把这个文件命名为common.h,或者干脆就叫main.h
3,每个C源文件应该包含自己的头文件以及那个共同的使用的头文件,里面还放自己本文件内部使用的全局变量或者以extern定义的全局变量
4。主文件main.c里面包含所有的头文件包括那个共同使用的文件,main.c里面的函数可以再做一个头文件,也可以直接放在文件的开头部分声明就可以了,里面一般还有中断服务程序也放在main.c里面
5。对于那些贯穿整个工程的变量,可以放在那个共同的使用的头文件里面,也可以用extern关键字在某个C源文件里面定义,哪个文件要使用就重复定义一下
6.建立工程的时候,只要把C源文件加到工程中,把H文件直接放到相应的目录下面就可以了,不需要加到工程里面。
在MON08中疑惑的问题?
我看可很多freescale的单片机的datasheet,在MONitor ROM一章中会提到有两种进入monitor rom的方式,一种为normal方式,一种为forced方式.forced方式较为简单,不需要占用太多的I/O口,不需要一个高电压,但是它需要一个特殊的条件,就是
If $FFFE and $FFFF contain $FF
其中$FFFE and $FFFF 是复位时的地址,也就是说只有在复位向量中包含FFFF,FFFF时在能进入这种方式.我对这一点不是很理解.它的意思是不是在芯片中没有程序的时候.才能进入forced mode.
因为在上电复位的时候,$FFFE and $FFFF 中的数据会装入程序计数器中,我想问下,$FFFE and $FFFF 中在芯片为空的时候是什么数据?在芯片非空的时候是什么数据?
----------------------------------------------
发贴时间: Jul 21 2005 9:15AM ||
strongchen
头衔:版主
对,$FFFE和$FFFF就是复位中断的矢量地址。当芯片为空时,复位矢量也为空,其中的数据为$FFFF。当芯片复位后,监控程序会检测复位矢量的值,如果发现数据为空(即为$FFFF),监控程序会强制启动,使芯片进入监控模式,即所谓的强制方式(forced)。
----------------------------------------------
发贴时间: Jul 21 2005 9:56AM ||
天涯倦客
那这种烧写方式意义好像不大啊,只有是空芯片才能进入监控方式.如果单只有这种方式,那好像就是一次性烧写了.
----------------------------------------------
发贴时间: Jul 21 2005 10:16AM ||
strongchen
头衔:版主
所以还有一种正常方式(normal)。当芯片不空时,通过特殊电平的设置,仍可以进入监控模式。
----------------------------------------------
发贴时间: Jul 21 2005 11:34AM ||
天涯倦客
谢谢版主,这个我知道,但是这种方式需要占用一些I/O口,不过现在也在凑合着用.i/o口尽量复用吧
----------------------------------------------
发贴时间: Jul 21 2005 11:45AM ||
strongchen
头衔:版主
只是复位时需要几个口线的电平设置。进入监控状态后,只需一个口进行通讯,其余的口线都被释放,可用回正常功能。
----------------------------------------------
黄果树 发表于 2005-8-1 00:24 侃单片机 ←返回版面
code warrror功能强大,但是感觉界面没有PIC的MPALB友好,特别是仿真时另外弹出一个窗口,不能在此窗口修改源代码,编译.烦!
听说code warrror软仿真功能强大,一直没有琢磨过,期望那天有高手出马,写本教程!
mon08的仿真模式,断点只能设一个,占用IO口,没有经验的很难连接上,连接上也会很容易死掉,必须复位..还不如一些小***的mcu(也用片上仿真).目前我用过的最好的片上仿真的8bit mcu是zilog的新款flash mcu,专用一个DBG口仿真烧录,一连就上.百发百中:)
由于强制通讯波特率为FBUS/256,因此总线频率受到主机软件允许的标准波特率的限制
当晶振=9.8304MHZ时,内部总线=9.8304/4=2.4576MHZ.
这里会有一个问题,即调试时的工作频率和产品的实际工作频率不一致
当不同长度的变量进行运算时,要特别当心,避免某些变量被”截肢”
//比如:
unsigned long aaa;
unsigned int bbb;
unsigned int ccc;
bbb=1000 ;
ccc=2000;
//下面的指令计算后,aaa并没有如预期的变成20000000,而是变成了33920,原因是高位被裁减掉了
aaa=bbb*ccc;
//改成下面的指令后,结果正确
aaa=ccc;
aaa=aaa*bbb;
23.PLL功能的启动方式
//--------------------------------------------------------
//启动PLL功能(8MHZ)
//
//总线频率与参数值表(外部晶振=32.768KHZ)
//--------------------------------------------------------
void PLL_ON(void)
{
PCTL = 0 ; //设置PCTL,关闭中断
PCTL_PRE = 0 ; //P
PCTL_VPR = 2 ; //E
PMS = 0X03D1 ; //N
PMRS = 0XD0 ; //L
PMDS = 1 ; //R
PCTL_PLLON = 1 ; //启动VCO时钟
PBWC_AUTO = 1 ; //设置工作模式自动
while(!PBWC_LOCK) ; //等待PLL稳定
PCTL_BCS = 1 ; //选择PLL信号为系统时钟源
asm nop ;
asm nop ;
}
相关连接:ICS08 FREESCALE(Motolora)单片机仿真编程器 |