📄 freescale.txt
字号:
#pragma CODE_SEG DEFAULT
static void PORTPInit(void) {
DDRP = 0X7F; //PORTP7输入
PERP = 0X80; //允许上拉或者下拉
PPSP = 0X7F; //下降沿触发中断
PIEP = 0X80; //中断允许
}
void main(void) {
DDRB = 0xFF;
PORTB = 0x00;
PORTB = 0xFF;
PORTPInit();
EnableInterrupts;
while(1)
{
;
}
}
freescale mc9s12dg128/dp256 MDC程序
[ 2006-6-7 12:40:50 | By: 晒太阳的小猪 ]
freescale mc9s12dg128/dp256 MDC程序
/模数计数器做定时器
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
#i nclude <hidef.h>
#i nclude <string.h>
static int waittime = 0;
static long i = 0;
static long absoluteTime = 0;
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void MDC_ISR(void){
MCFLG = 0x80;
waittime++;
if(waittime>=200) waittime=0;
PORTB = waittime;
}
#pragma CODE_SEG DEFAULT
static void MDCInit(void)
{
MCCTL = MCCTL&0Xfb;
MCCTL = 0Xe3; MCCTL = MCCTL|0X04
MCCNT = 0X3456;
MCCTL = MCCTL|0X08 ;
i= MCCNT; }
void main(void)
{
DDRB = 0xFF;
PORTB = 0x00;
PORTB = 0xFF;
MDCInit();
EnableInterrupts;
while(1)
{
;
}
}
freescale mc9s12dg128/dp256 模拟串口程序
[ 2006-6-8 8:50:01 | By: 晒太阳的小猪 ]
freescale mc9s12dg128/dp256 模拟串口程序
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
//模拟串口,8M/(64*13)=9615,接近9600
#i nclude <hidef.h>
#i nclude <string.h>
static long absoluteTime = 0;
static unsigned char F_TM = 0;
static unsigned char time_count = 0;
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void ECT_ISR(void){
TFLG1 = 0x01;
F_TM=1;
time_count++;
}
#pragma CODE_SEG DEFAULT
static void ECTInit(void) {
TIOS = 0x81; //这句话必须写在前边,不然无法把数据写入TC0,TC7
TC0H = 0x00; // Store given value to the compare register
TC0L = 0x0D;
TC7H = 0x00; // Store given value to the modulo register
TC7L = 0x0D;
TSCR2 = 0x0E; // 把TSCR2中TCRES置位,定时器计数达到TC7数值后,自动复位tore given value to the prescaler
TFLG1 = 0x01; // Reset interrupt request flag
TIE = 0x01; // Enable interrupt
TIOS = 0x01;
//TSCR1 = 0X80; // Enable Timertimer enable
}
void PSendChar(uchar inch)
{
uchar ii;
time_count=0;
//REN_485=1;
DDRS = 0XFF;
ii=0;
F_TM=0;
PORTS=PORTS&0xFD; //start bit
TIMER_ENABLE; //启动
while(!F_TM);
while(ii<8)
{
if(inch&1)
{
PORTS=PORTS|0x02;
}
else
{
PORTS=PORTS&0xFD;
}
F_TM=0;
while(!F_TM);
ii++;
inch>>=1;
}
PORTS=PORTS|0x02;
F_TM=0;
while(!F_TM);
TIMER_DISABLE; //停止timer
}
//检查是不是有起始位
uchar StartBitOn(void)
{
return(!(PTIS&0x01));
}
//接收一个字符
uchar PGetChar()
{
uchar rch,ii;
TIMER_ENABLE;
F_TM=0;
ii=0;
rch=0;
while(!F_TM); //等过起始位
while(ii<8)
{
rch>>=1;
if(PTIS&0x01)
{
rch|=0x80;
}
ii++;
F_TM=0;
while(!F_TM);
}
F_TM=0;
while(!F_TM)
{
if(PTIS&0x01)
{
break;
}
}
TIMER_DISABLE; //停止timer
return rch;
}
void main(void)
{
uchar gch;
DDRB = 0xFF;
PORTB = 0x00;
PORTB = 0xFF;
ECTInit();
EnableInterrupts;
PSendChar(0x55);
PSendChar(0x99);
PSendChar(0xDA);
while(1)
{
DDRS = 0x00;
if(StartBitOn())
{
gch=PGetChar();
PSendChar(gch);
}
}
}
freescale mc9s12dg128/dp256 pwm脉宽调制程序
[ 2006-6-8 8:55:27 | By: 晒太阳的小猪 ]
freescale mc9s12dg128/dp256 pwm脉宽调制程序
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
#i nclude <hidef.h>
void main()
{
PWMCNT0 = 0;
PWMDTY0 = 0x6b; // Store initial value to the duty-compare register
PWMPER0 = 0xFF; // and to the period register
PWMPRCLK = 0x00; // Set prescaler register
PWMSCLA = 0x4B; // Set scale register
PWMCLK = 0x01; // Select clock source
PWME = 0x01; // Run counter
while(1){;}
}
freescale mc9s12dg128/dp256 sci串行通信程序
[ 2006-6-8 8:59:11 | By: 晒太阳的小猪 ]
freescale mc9s12dg128/dp256 sci串行通信程序
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
#i nclude <hidef.h>
#i nclude <string.h>
static int waittime = 5;
static unsigned char redButtonDown = FALSE, blueButtonDown = FALSE;
static long absoluteTime = 0;
static void WriteToSCI0(const char *text){
while (*text != '\0'){
while (!(SCI0SR1 & 0x80)); /* wait for output buffer empty */
SCI0DRL = *text++;
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void SCI0_ISR(void){
unsigned char rc;
rc = SCI0SR1; /* dummy read to clear flags */
rc = SCI0DRL; /* data read */
PORTB =rc;
SCI0DRL = rc;
}
static void SCI0Init(void) {
SCI0BDL = (unsigned char)((16000000UL /* OSC freq */ / 2) / 9600 /* baud rate */ / 16 /*factor*/);
SCI0CR2 = 0x2C;
}
void main(void) {
DDRB = 0xFF;
SCI0Init();
EnableInterrupts;
WriteToSCI0("\n\n*** Disco Demo ***\n");
WriteToSCI0("\nEnter number (1-9) to change speed or\n'stop' to halt simulation.\n");
while(1){;}
}
飞思卡尔8针脚的胎压监测传感器实现低成本与低功耗
[ 2006-6-8 16:02:54 | By: 晒太阳的小猪 ]
[转载]为了达到胎压监测系统的低功耗要求,飞思卡尔8针脚的胎压监视传感器MPXY8020A可与遥控车门开关(RKE)系统结合使用,提供一个高度集成的低成本系统。
飞思卡尔MPXY8020A是一款8针脚的胎压监测传感器。它由一个变容压力传感器元件、一个温度传感元件和一个界面电路(具有唤醒功能)组成,所有这三个元件都在单块芯片中。
MPXY8020A封装在超级小尺寸封装(SSOP)中,SSOP带有介质保护过滤器。为了达到胎压监视系统的低功耗要求,MPXY8020A进行了专门设计,可与飞思卡尔的遥控车门开关(RKE)系统结合使用,提供一个高度集成的低成本系统。
产品特性
· 汽车级温度规范 (- 40℃至125℃)
· 637.5 kPa 的压力范围
· 温度和压力传感器的数字(8位)输出
· 按电源比例的电压,从2.1V到3.6V
· SSOP封装可提供强大的介质保护,体积小巧
· 三秒唤醒功能,实现了模块级的能耗管理
· 低功耗
· 飞思卡尔为TPMS-RKE系统提供了一个完整的芯片组,无需其它特定的TPM接收器
freescale mc9s12d系列控制器货源
[ 2006-6-12 22:07:32 | By: 晒太阳的小猪 ]
freescale mc9s12d系列控制器货源问题真不好解决。询问了无数家公司都是没有,要是订购的话,必须要批量,100片以上,晕了!
打电话到清华的motorola研究中心,他们说不出售芯片,只卖相应的开发板,再次晕倒!
freescale公司主页给出了国内销售商,打电话到北京销售商,说是只有9s12a系列的,还不全,让我们咨询一下深圳的。打电话到深圳,同样。晕倒!
中电网上边给出了零售商武汉力源,亿弘国际,都打电话问了,同样的结果。晕!
今天在中电网bbs看到一个帖子,说是想批量购进9s12系列的芯片,结果freescale销售商半年都没有给消息。狂晕!
freescale,你到底是怎么了?有你这么做市场的么?
自己做的mc9s12dg256的板子好用了
[ 2006-6-29 10:54:17 | By: 晒太阳的小猪 ]
这个板子,一个多月之前就做好了,一直苦于买不到相应的单片机。昨天下午,除了几个插座之外,一切都焊接完毕。晚上回来,胆战心惊的通电实验,发现没有任何元件有被烧坏的迹象,窃喜中。插上bdm仿真头,打开调试软件,没有任何反应,看到的寄存器内容都是0,无法下载程序。自己反复尝试调试的各种命令,无果。开始检查硬件,一直到将近十点,除了发现复位电路的一个电阻被错误的把100欧姆焊接成100k之外,其他都没有发现。换过电阻,仍然不好用,郁闷极了。测试了晶镇,没有起振,反复检查电路,没有问题啊。担心中。
今天早上,来检查,开始怀疑复位电路。测试了很久,果然发现reset脚没有焊接好。用电烙铁修正,好了。通电,再次试验。
终于有反映了,可以下载程序了。下载了小灯闪烁试验,一切ok,运行正常了!
又下载了定时器中断实验,很好,ok!
中午可以安心吃饭了阿!
MC9S12DG128/DP256/DG256等型号控制器最小系统原理图
[ 2006-6-29 18:29:31 | By: 晒太阳的小猪 ]
user1/11843/upload/20066291832.rar我做的一个项目的单片机部分电路
由于网络上几乎搜索不到此类型单片的电路图,这里把我做得给出,供大家参考
包含这个电路的项目,自己做了控制电路板,检验正确
适用于MC9S12DG128/DG256等
我做的mc9s12板子已经测试完毕
[ 2006-7-2 12:27:48 | By: 晒太阳的小猪 ]
我做的板子,周2还是周3焊接好的,记不清楚了。这几天做各个模块的测试。
这个板子主要的模块有:mc9s12dg256控制器最小系统,rs232输出,带光电隔离的rs485输出,20路电压信号输入,4路电流信号输入,一个tlc1543作为辅助的ad,一个tlc5617和2路带线性光藕隔离的0-10v电压输出,8路继电器输出,16路隔离信号量输入。刚刚做完所有功能模块的调试,一切都好,设计完全正确。
接下来要做的就是整体调试了,要设计好整体流程,作模拟调试了。
先放松一下,一会儿回去洗个澡,再接着努力。
mc9s12控制器通信调试中
[ 2006-7-3 20:57:44 | By: 晒太阳的小猪 ]
今天从早晨到现在一直在做mc9s12的458通信调试。今天的程序达到了如下要求:
1、接收一定字节数的数据,数据有起始字节,有累加和校验;
2、接收时间做通信定时处理,防止丢包现象导致的无限期等待数据;
3、根据接收到的指令数据,执行相应的功能;
4、如果接收到的数据有不可纠正的错误,发送数据错误指令;
等等。
明天看情况做调整,得编写整体程序了。
mc9s12控制器数据采集板已经调试完毕
[ 2006-7-6 16:43:57 | By: 晒太阳的小猪 ]
mc9s12控制器数据采集板所有程序都已经调试完毕。其他的问题需要配合主控制板在做调适。不过这个主控板还没有做呢!
又画了一块板子
[ 2006-7-29 14:17:30 | By: 晒太阳的小猪 ]
这一个星期以来,自己完善了mc9s12dg128密炼机控制器的主控板设计,并且绘制了这个板子的pcb,在这个板子上除了一些光电隔离的开关量输入,按键,显示电路之外,还有一个485接口,一个232接口,一个模拟485接口,一个模拟232接口等。并没有什么太难的地方,主要麻烦的是外部接口数量太多。开关量,按键,显示用数码管,led太多了,比较麻烦,呵呵。
等待那个fpga的板子回来。教研室的人大部分都回家了,有点冷清了。
密炼机油路监控系统的主控制板做好了
[ 2006-10-8 18:51:17 | By: 晒太阳的小猪 ]
主控制板终于做好了,元件都焊接完毕,自己通电调试了一下,各个功能模块都好用。接下来就是系统软件编程了,工作量不少,慢慢来。
感觉mc9s12dg256的调试工具cw不是很好使用。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -