智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 25560|回复: 92
打印 上一主题 下一主题

MC9S12DG128系列例程--RTI

  [复制链接]

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
跳转到指定楼层
1#
发表于 2008-12-2 03:24:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
MC9S12DG128系列例程--RTI

/**************************************************************************************
龙丘MC9S12(DG128)多功能开发板V4.0
Designed by Chiu Sir
E-mail:chiusir@163.com
软件版本:V1.1
最后更新:2008年12月01日
相关信息参考下列地址:
博客:  http://longqiu.21ic.org
淘宝店:http://shop36265907.taobao.com
------------------------------------
Code Warrior 4.6
Target : MC9S12DG128B
Crystal: 16.000Mhz
busclock:16.000MHz
pllclock:32.000MHz
目录路径:F:\IVTech\
============================================
演示程序使用说明:
1.实时时钟的演示:
2.毫秒级计时输出;
3.串口输出速率:9600bps.
4.中断的使用。
*****************************************************************************************/

#i nclude <hidef.h>           /* common defines and macros */
#i nclude <mc9s12dg128.h>     /* derivative information */
#i nclude <stdio.h>
#i nclude "LQprintp.h"
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"   
typedef unsigned char U8;
typedef unsigned int  U16;
typedef unsigned long U32;
typedef signed char   S8;
typedef signed int    S16;
volatile U32 u32_time_cnt=0;     
//====================中断函数==================================   
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 7 RTI_ISR(void) {   // 32.75ms timer overflow   
  ++u32_time_cnt;         
  PORTB_BIT2=~PORTB_BIT2;
  CRGFLG|=0X80;//Write 1 to clear RTIF bit   
}
/*******************************************************************************
*** 函 数 名: void DLY_ms(U16 x)
*** 功能描述: 毫秒级延时;
*** 全局变量: NO !
*** 输  入: U16 x !
*** 输  出: NO !  
*** 修 改 人:           日期:2007-11-28
*** 函数说明:
******************************************************************************/
void DLY_ms(int ms)  //x取值1~255;
{
  int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii<ms;ii++)
     for(jj=0;jj<2770;jj++);    //32MHz--1ms
     //for(jj=0;jj<4006;jj++);  //48MHz--1ms
     //for(jj=0;jj<5341;jj++);  //64MHz--1ms  
}
//-----------------------------------------------------
static void Port_Init(void)
{  
    DDRA = 0xff;  
    PORTA= 0x00;         
    DDRB = 0xff;  //LED  PTB0--7,
    PORTB= 0xff;  //LEDs on  
}
//-----------------------------------------------------
static void SCI_Init(void)
{
    SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
    SCI0BDH=0x00; //busclk  8MHz,19200bps,SCI0BDL=0x1a
    SCI0BDL=0x68; //SCI0BDL=busclk/(16*SCI0BDL)
                  //busclk  8MHz, 9600bps,SCI0BDL=0x34
                  //busclk 16MHz, 9600bps,SCI0BDL=0x68
                  //busclk 24MHz, 9600bps,SCI0BDL=0x9C
}                 //busclk 32MHz, 9600bps,SCI0BDL=0xD0
// setup of the RTI interrupt frequency     
static void RTI_Init(void)
{   
    RTICTL=0x77;   //8x2^16 =>32,75ms,30.5175Hz                     
    //CRGINT=0X80;   //enable RTI Interrupt
    CRGINT=0X80;   //enable RTI Interrupt
}
// PLL初始化子程序   BUS Clock=16M
void setbusclock(void)
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=1;         
    REFDV=1;          //pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;
    _asm(nop);          //BUS CLOCK=16M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}
//-----------------------------------------------------
#pragma CODE_SEG DEFAULT
void Init_Dev(void)
{
    setbusclock();
    Port_Init();
    SCI_Init();      
    RTI_Init();
}
//====================main()==================================
#pragma CODE_SEG DEFAULT     
void main(void)   
{
   
  S8  txtbuf[66]="";
  U8  u8_mintes=0;
  U16 u16_sec=0,u16_ms=0;

   
  Init_Dev();  
  PORTB=0x00;
  putstr("\nLongQiu s.&t.\n");   
  DLY_ms(1000);     
  PORTB=0xFF;
  EnableInterrupts;   
  for(;;)
  {
//----------时钟计时器---------------------------------
    u16_sec=u32_time_cnt*131/4;//理论值为32.75ms,时间计算部分  
    u16_ms=u16_sec%1000;        
    u16_sec=u16_sec/1000;   
    sprintf(txtbuf,"LONGQIU--time elapsed: %d:%02ds-%03dms ",u8_mintes,u16_sec,u16_ms);     
    printp("\n\t%s",txtbuf);           
    if(u16_sec>58)
    {
      u8_mintes++;
      u32_time_cnt=0;
    }
//--------------------------------------------------------   
    PORTB_BIT0=~PORTB_BIT0;        
  }//for(;;)
} //main
下面是完整工程,需要的请点击下载:demoRTI.rar
看帖不回是不道德的!

17

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2498
威望
1282
贡献
688
兑换币
843
注册时间
2014-10-25
在线时间
264 小时
毕业学校
哈根
93#
发表于 2015-1-27 15:17:13 | 只看该作者
赞一个、、、、、、、、、、
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
52
威望
42
贡献
6
兑换币
15
注册时间
2014-3-23
在线时间
3 小时
毕业学校
安徽大学
92#
发表于 2014-4-8 09:40:35 | 只看该作者
:):):):):):):)
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

注册会员

Rank: 2

积分
156
威望
90
贡献
30
兑换币
42
注册时间
2013-1-21
在线时间
18 小时
91#
发表于 2014-2-25 23:07:59 | 只看该作者
好啊。
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
威望
157
贡献
64
兑换币
92
注册时间
2013-11-30
在线时间
29 小时
毕业学校
兰州交大
90#
发表于 2014-2-22 20:30:02 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

3

主题

103

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
威望
488
贡献
282
兑换币
203
注册时间
2013-6-14
在线时间
115 小时
89#
发表于 2013-8-12 09:29:46 | 只看该作者
回复 支持 反对

使用道具 举报

22

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
670
威望
422
贡献
150
兑换币
188
注册时间
2012-9-25
在线时间
49 小时
毕业学校
在读
88#
发表于 2013-3-22 19:59:28 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

0

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
734
QQ
威望
374
贡献
190
兑换币
127
注册时间
2013-1-15
在线时间
85 小时
87#
发表于 2013-3-17 15:33:13 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

注册会员

Rank: 2

积分
95
威望
55
贡献
26
兑换币
24
注册时间
2013-2-26
在线时间
7 小时
毕业学校
大连海事大学
86#
发表于 2013-3-7 09:20:51 | 只看该作者
回复 支持 反对

使用道具 举报

18

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1148
QQ
威望
529
贡献
281
兑换币
284
注册时间
2012-11-9
在线时间
169 小时
85#
发表于 2013-3-6 09:06:23 | 只看该作者
果断顶起啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 14:12 , Processed in 0.427663 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表