/************************************************************************************** 龙丘MC9S12(DG128)多功能开发板 Designed by Chiu Sir E-mail:chiusir@163.com 软件版本:V1.1 最后更新:2008年11月20日 相关信息参考下列地址: 博客: http://longqiu.21ic.org 淘宝店:http://shop36265907.taobao.com ------------------------------------ Code Warrior 4.6 Target : MC9S12DG128B Crystal: 16.000Mhz busclock: 8.000MHz pllclock:16.000MHz 本程序主要包括以下功能: 1.设置锁相环和总线频率; 2.IO口使用; 3.IOC7口16位计数器。 LED计数,根据灯亮可以读取系统循环了多少次 *****************************************************************************************/ #i nclude <hidef.h> /* common defines and macros */ #i nclude <mc9s12dg128.h> /* derivative information */ #i nclude "LQprintp.h" #pragma LINK_INFO DERIVATIVE "mc9s12dg128b" //----------------------------------------------------- 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; } //----------------------------------------------------- static void SCI_Init(void) { SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable SCI0BDH=0x00; //出口波特率为9600 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 //----------------------------------------------------- static void IOC_Init(void) { PACTL=0X50;//PT7 PIN,PACN32 16BIT,FALLing edge,NOT INTERRUPT TCTL3=0xc0;//c-输入捕捉7任何沿有效, TCTL4=0xc0;//40表示ICx禁止, 1表示上升沿, 2表示下降沿, 3表示任何沿 TIE =0x00;//每一位对应相应通道中断允许,0表示禁止中断 TIOS =0x00;//每一位对应通道的: 0输入捕捉,1输出比较 TCTL3_EDG7x=1;//c-输入捕捉7任何沿有效, } //----------------------------------------------------- void Dly_ms(int ms) { int ii,jj; if (ms<1) ms=1; for(ii=0;ii<ms;ii++) for(jj=0;jj<2670;jj++); //busclk:16MHz--1ms } void main(void){ unsigned char LedCnt=0; unsigned int IOCcnt; setbusclock(); SCI_Init(); IOC_Init(); DDRB=0xFF; PUCR_PUPBE=1; EnableInterrupts; for(;;) { LedCnt=(LedCnt>0XFE?0:++LedCnt); Dly_ms(1000); //修改延时以修改数据发送频率 //低电平灯亮用这句,注释掉下面那句 PORTB=~LedCnt; //高电平灯亮用这句,注释掉上面那句 //PORTB=LedCnt; putstr("\nWeb: shop36265907.taobao.com"); IOCcnt=PACN32; if(IOCcnt>999) PACN32=0; printp("\nIOC is:%d",IOCcnt); } } 下面是完整工程,需要的请点击下载:demoIOC.rar 看帖不回是不道德的! |
欢迎光临 智能车制作 (http://111.231.132.190/) | Powered by Discuz! X3.2 |