|
MC68HC908JL8
匠人应用手记
前言
匠人最近开始和MC68HC908JL8的亲密接触.(忙着和它约会连上网次数也少了许多,嘿嘿....)
作为一个长期用汇编的工程师"转行"用C写程序,感觉挺累人,不过苦中也有乐.愿将原汁原味的手记与大家分享.这篇手记将随着匠人的经验值不断升级而不断更新,其中会有心得,也会有困惑,权当是一个过程的见证吧.
首先得声明,匠人是第一次用摩托罗拉的芯片,也是第一次用ANSI_C语言,所以手记中如有错误和问题,望大伙指点.
01.C语言中嵌入汇编的6种方式:
//嵌入汇编方式1(宏):
EnableInterrupts; // 开中断
//嵌入汇编方式2(可嵌入多条指令):
asm {
lda _PTB ;
}
//嵌入汇编方式3(单条指令):
asm eor #0b00000100 ;
asm nop ;
//嵌入汇编方式4(单条指令):
asm "nop";
//嵌入汇编方式5(单/多条指令):
asm (" eor #4 "); asm ("nop; nop");
asm("nop\n nop");
//嵌入汇编方式6(可嵌入多条指令):
#asm
nop
nop
#endasm
02.C语言中数的表示方式:
****举例如下:
二进制: 0b00000100
十进制: 4
十六进制: 0x4
****注意:汇编指令的表示方式与C的表示方式不一样,但如果是在C中嵌入汇编,则也要按C的方式来写
****问题:八进制的引导符号还不知道
03.循环体的3种写法:
写法1:
while(1);
{
......
}
写法2(推荐):
for(;;);
{
......
}
写法3:
loop:
......
goto loop
****网友gtw答:CodeWarrior对恒为“真”的表达式编译时经常会有提示,很罗嗦,如while(1);不如用for(;;)
04.关于复位及中断的入口地址:
所有的入口地址都存储在$FFD0~$FFFF区域中
比如:复位地址存储在$FFFE~$FFFF中(缺省值=DC8C,即复位后从DC8C处开始执行)
****问题:如何修改入口地址,还不清楚
****网友gtw答:定义入口地址,有多种方法interrupt void (VECTOR_NUMBER) FUNC_NAME(void)即为其一,可以自动设置。
05.对被调函数的说明(声明):
1。如果被调用函数出现在主调用函数之后,则在调用之前应该先对被调用函数的返回值类型作出说明
一般形式,如:void delay(void);
2。如果被调用函数出现在主调用函数之前,则不需要作出说明
3。如果被调用函数和主调用函数不在一个文件中,则说明方式如下:
extern void delay(void); //注:如果不作说明,系统会警告,但也能进入DEBUG状态
06.对中文支持:
缺省的系统环境对中文的支持不好,表现为按删除键时回将中文删除一半从而显示乱码.
解决方法是选择[Edit]菜单下的[Preferences…],并按如下设置:
将EDIT0R中的font&tabs中改动:
font选择为宋体
script选择为chinese_gb2312
****注:也可以在这里设置TAB所代表的空格数(缺省是2)
相关连接:ICS08 FREESCALE(Motolora)单片机仿真编程器 |