首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[分享]关于使用飞思卡尔单片机的心得

[分享]关于使用飞思卡尔单片机的心得

大家有什么关于使用飞思卡尔的心得与体会可以写在这里,与大家共享啊,呵呵.另个欢迎大家关注我的BLOG:http://blog.eccn.com/go.asp?user=super323
个人BLOG:http://blog.eccn.com/u/107300/index.htm
对于单片机而言,IO口是十分重要的,了解了IO口后,能够进行一些小的控制,如控制一个LED灯的亮灭等.
对于飞思卡尔S12单片机,80LQFP封装的芯片有59个IO口,112LQFP有91个IO口.一般情况下,如果我们不考虑其功耗问题,主要用到了以下几个寄器。DDRT,PTT,PTIT。.
以T口为例。DDRT:方向寄存器,选择IO口的方向,是输入还是输出。PTT:数据寄存器,写端口一般用这个,如果将T0引脚输出为1,则为:PTT_PT0=1;为0:则可用:PTT_PTT0=0;另外,当引脚处于输出状态,然要读回引脚的状态,也可以调用些寄存器。但是,如果当引脚是输出而又要知道当前引脚状态,这时候如果读PTT寄存器就有可能错误了,为什么呢?因为有可能引脚状态是由外部决定的,比如:输出为1,然而外部确强制拉低,如果读PTT,读回来的为1,然后读PTIT则为0了。
IO口的系统图如下:

另外对于IO口方面的寄存器,还有RDRX,PERX,PPSX等寄存器!
注意:上面例子中的PTT_PTT0=1,并不表示S12单片机可以位寻址,而是编译器作了相应的变换。具体可以查阅其头文件!
有些爱好者,先前用过51单片机,而51单片机可以位寻址,如sbit Led = P0^0.[upload=image/pjpeg]uploadImages/422710960.jpg[/upload]
个人BLOG:http://blog.eccn.com/u/107300/index.htm
S12也可以位寻址,有位寻址指令。而编译器会根据情况选择最佳的寻址方式。
海纳百川  有容乃大
呵呵,又长见识了,能几个举例子吗?开关中断好象是位寻址的“DisableInterrupts;”
“EnableInterrupts”
个人BLOG:http://blog.eccn.com/u/107300/index.htm
http://bbs.chinaecnet.com/uploadImages/IO.rar
上传一个IO的例子,下载到清华的板子里面会有LED闪烁的现象!

接下来说中断了:先上传一个外部中断的例子再说:http://bbs.chinaecnet.com/uploadImages/INT.rar
个人BLOG:http://blog.eccn.com/u/107300/index.htm
对于中断的一些注意事项,首先中断程序必须放在非分页地址中,其次中断有很多种写法,这里介绍两种,1,用中断矢量对应的中断号;2:修改PRM文件,将中断加进去.注意:如果用监控程序调试目标板,不能用中断号,必须在PRM文件中修改,否则不能进入中断,或者进入错误.
中断矢量对应的中断号,可以在头文件中找到,也可也在数据手册中找到,对于数据手册,在"9S12DT128DGV2.pdf"第81页,有一个中断向量表,Table 5-1 Interrupt Vector Locations,从上往下数数,从0开始,找到相对应的中断地址,然后找到号就得到了此中断对应的中断号!
对于头文件,以DG128为例,在MC9S12DG128.h中,
#define VReserved63 0x0000FF80
#define VReserved62 0x0000FF82
#define VReserved61 0x0000FF84
#define VReserved60 0x0000FF86
#define VReserved59 0x0000FF88
#define VReserved58 0x0000FF8A
#define Vpwmesdn 0x0000FF8C
#define Vportp 0x0000FF8E
#define Vcan4tx 0x0000FF90
#define Vcan4rx 0x0000FF92
#define Vcan4err 0x0000FF94
#define Vcan4wkup 0x0000FF96
#define VReserved51 0x0000FF98
#define VReserved50 0x0000FF9A
#define VReserved49 0x0000FF9C
#define VReserved48 0x0000FF9E
#define VReserved47 0x0000FFA0
#define VReserved46 0x0000FFA2
#define VReserved45 0x0000FFA4
#define VReserved44 0x0000FFA6
#define VReserved43 0x0000FFA8
#define VReserved42 0x0000FFAA
#define VReserved41 0x0000FFAC
#define VReserved40 0x0000FFAE
#define Vcan0tx 0x0000FFB0
#define Vcan0rx 0x0000FFB2
#define Vcan0err 0x0000FFB4
#define Vcan0wkup 0x0000FFB6
#define Vflash 0x0000FFB8
#define Veeprom 0x0000FFBA
#define Vspi2 0x0000FFBC
#define Vspi1 0x0000FFBE
#define Viic 0x0000FFC0
#define VReserved30 0x0000FFC2
#define Vcrgscm 0x0000FFC4
#define Vcrgplllck 0x0000FFC6
#define Vtimpabovf 0x0000FFC8
#define Vtimmdcu 0x0000FFCA
#define Vporth 0x0000FFCC
#define Vportj 0x0000FFCE
#define Vatd1 0x0000FFD0
#define Vatd0 0x0000FFD2
#define Vsci1 0x0000FFD4
#define Vsci0 0x0000FFD6
#define Vspi0 0x0000FFD8
#define Vtimpaie 0x0000FFDA
#define Vtimpaaovf 0x0000FFDC
#define Vtimovf 0x0000FFDE
#define Vtimch7 0x0000FFE0
#define Vtimch6 0x0000FFE2
#define Vtimch5 0x0000FFE4
#define Vtimch4 0x0000FFE6
#define Vtimch3 0x0000FFE8
#define Vtimch2 0x0000FFEA
#define Vtimch1 0x0000FFEC
#define Vtimch0 0x0000FFEE
#define Vrti 0x0000FFF0
#define Virq 0x0000FFF2
#define Vxirq 0x0000FFF4
#define Vswi 0x0000FFF6
#define Vtrap 0x0000FFF8
#define Vcop 0x0000FFFA
#define Vclkmon 0x0000FFFC
#define Vreset 0x0000FFFE
个人BLOG:http://blog.eccn.com/u/107300/index.htm
顶小康同学,不错不错
请教一个问题:
输入捕捉设置时,TSCR2设置预分频系数有何作用.

对TCNT分频用的

个人BLOG:http://blog.eccn.com/u/107300/index.htm

好像不能上传附件了,只能等到论坛好用了再说吧,唉,写好的中断方法没有办法上传

个人BLOG:http://blog.eccn.com/u/107300/index.htm
不错不错,受教了

嘿嘿,谢谢康兄了!

路是一步一步走出来的!!
高手阿,以后肯定会学这个的,现在还没有足够的时间啊

忘了以前的号了

忘了以前的号了

多发发帖 啊

我一直支持你

返回列表