历史上的今天

今天是:2024年08月24日(星期六)

2021年08月24日 | 实时时钟的演示:毫秒级计时输出;串口输出;中断的使用

发布者:tony520 来源: eefocus关键字:实时时钟  串口输出  中断 手机看文章 扫描二维码
随时随地手机看文章

/**************************************************************************************
龙丘MC9S12XS128 多功能开发板
Designed by Chiu Sir
E-mail:chiusir@163.com
软件版本:V1.1
最后更新:2009年2月28日
相关信息参考下列地址:
博客:  http://longqiu.21ic.org
淘宝店:http://shop36265907.taobao.com
------------------------------------
Code Warrior 4.7
Target : MC9S12XS128
Crystal: 16.000Mhz
busclock:16.000MHz
pllclock:32.000MHz

演示程序使用说明:
1.实时时钟的演示:
2.毫秒级计时输出;
3.串口输出速率:9600bps.
4.中断的使用。
*****************************************************************************************/
 
#i nclude      
#i nclude    
#i nclude
#pragma LINK_INFO DERIVATIVE "mc9s12xs128" 

volatile dword 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_PB2=~PORTB_PB2;
  CRGFLG|=0X80;//Write 1 to clear RTIF bit  
}


// 函 数 名: void DLY_ms(word x)
// 功能描述: 毫秒级延时
void DLY_ms(int ms)  //x取值1~255;
{
  int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii     for(jj=0;jj<2770;jj++);    //32MHz--1ms 
}
//-----------------------------------------------------
static void Port_Init(void)

    DDRA = 0xff; 
    PORTA= 0x00;         
    DDRB = 0xff;  //LED  PTB0--7,
    PORTB= 0xff;  //LEDs off 
}
//-----------------------------------------------------
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 16MHz, 9600bps,SCI0BDL=0x68                  
}                
void uart_putchar(unsigned char ch)
{
  if (ch == '/n') 
  {
      while(!(SCI0SR1&0x80)) ;    
      SCI0DRL= 0x0d;            //output'CR'
     return;
  }
  while(!(SCI0SR1&0x80)) ;       //keep waiting when not empty 
  SCI0DRL=ch;
}

void putstr(char ch[])
{
  unsigned char ptr=0;
  while(ch[ptr]){
      uart_putchar((unsigned char)ch[ptr++]);
  }
}
// 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=0x00 | 0x01;  // VCOFRQ[7:6];SYNDIV[5:0]
                        // fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)
                        // fPLL= fVCO/(2 × POSTDIV)
                        // fBUS= fPLL/2
                        // VCOCLK Frequency Ranges  VCOFRQ[7:6]
                        // 32MHz <= fVCO <= 48MHz    00
                        // 48MHz <  fVCO <= 80MHz    01
                        // Reserved                  10
                        // 80MHz <  fVCO <= 120MHz   11    
    REFDV=0x80 | 0x01;  // REFFRQ[7:6];REFDIV[5:0]
                        // fREF=fOSC/(REFDIV + 1)
                        // REFCLK Frequency Ranges  REFFRQ[7:6]
                        // 1MHz <= fREF <=  2MHz       00
                        // 2MHz <  fREF <=  6MHz       01
                        // 6MHz <  fREF <= 12MHz       10
                        // fREF >  12MHz               11                        
                        // pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;
    POSTDIV=0x00;       // 4:0, fPLL= fVCO/(2xPOSTDIV)
                        // If POSTDIV = $00 then fPLL is identical to fVCO (divide by one).
    _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)   
{
  
  char  txtbuf[66]="";
  byte  u8_mintes=0;
  word  u16_sec=0,u16_ms=0;   
   
  Init_Dev(); 
  PORTB=0x00;
  putstr("/nLongQiu s.&t. Co. Ltd.");   
  putstr("/nhttp://shop36265907.taobao.com");   
  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,"/n%d:%02ds-%03dms ",u8_mintes,u16_sec,u16_ms);    
    putstr(txtbuf);          
    if(u16_sec>58)
    {
      u8_mintes++;
      u32_time_cnt=0;
    }
//--------------------------------------------------------   
    PORTB_PB0=~PORTB_PB0;
    DLY_ms(50);        
  }//for(;;)
} //main


关键字:实时时钟  串口输出  中断 引用地址:实时时钟的演示:毫秒级计时输出;串口输出;中断的使用

上一篇:mc9s12dg128使用定时器的输出比较产生定时中断代码亮1S灭1S
下一篇:freescale codewarrior编译器的使用

推荐阅读

8月15日-8月19日,在北京亦庄国际会展中心举办了为期五天的2018世界机器人大会。在本次展会中,优必选首次亮相了一款名为ATRIS的巡检机器人,京东,神州云海、达闼科技等机构也都展示其安防巡检机器人产品。随着人工智能技术的爆发,传统的安防产业也开始在新技术的推动下迭代发展,在本次展会中巡检机器人的出现成了安防领域创新的重要表现。 近日,亿...
中国希望在人工智能(AI)领域领军全球,且AI研究质量已取得令人印象深刻的飞跃。但观察人士警告说,有几个因素或将阻碍中国的AI计划,包括缺乏对用于开发支撑该领域的理论的贡献,以及中国企业不愿对实现根本性突破所需的研究进行投资。 西安交大人工智能与机器人研究所所长郑南宁院士表示,中国已在计算机视觉、语音识别和自然语言处理等领域拥有一批世界...
Xylon是嵌入式图形、视频和图像处理以及网络领域的领先知识产权(IP)提供商。这家总部位于克罗地亚的公司主要推出基于Xilinx FPGA的优化IP核,帮助客户开发高性能设计,降低生产成本。这些IP核被称为逻辑块,它们允许通过GUI进行配置,并且无需手动编码就可以在芯片上实现SoC。并且会提供了详细的文档、软件支持和参考设计。Xylon团队由50多名高技能开发...
2020年7月13日,全球第二大模拟芯片厂商ADI(Analog Devices, Inc.)正式宣布,将以全股票交易的方式收购竞争对手,全球第七大模拟芯片公司Maxim Integrated,涉及交易金额达209.1亿美元,合并后的公司估值将超680亿美元(约人民币4760亿)。根据《反垄断法》,如若双方公司在全球范围内的收入超过100亿并且在中国市场收入超过4亿,那么我国相关监管部...

史海拾趣

问答坊 | AI 解惑

盛群推出 TinyPower 技术新IC

 盛群半导体(Holtek)推出具备TinyPowerTM技术的新产品HT48R52及HT48R53,具有极低的功耗,可延长电池的使用时间,使盛群半导体的单片机产品更加符合绿色能源的潮流。TinyPowerTM技术使得产品在3伏特的工作电压下有低至300uA的工作电流,而在进 ...…

查看全部问答∨

开始入门DSP注意事项!

在作硬件之前,需要看的资料有: 1.芯片数据手册,描述该器件的引脚信号、片上资源、电气指标和机械特性(如封装等),在做硬件前必看(TMS320F281x数据手册SPRS174J) 2.某一系列DSP的CPU和指令集用户指南,描述该系列DSP的CPU结构、内部寄存器 ...…

查看全部问答∨

悬赏女友一名,你将得到一个男友作为回报!

补充资料悬赏女友一名。二手亦可,要求九成新以上,无附加产品。产地不限,山寨亦可.需性能稳定,运行可靠.维护简单,节省耗材.惯用麦当劳,啃得基等洋耗材者谢绝.出厂日期为1975年以后。各零部件齐全。预装中文操作系统,兼容英文或俄文操作系统更佳。 ...…

查看全部问答∨

血液分析系统对采样模块有哪些新要求?

血液分析方式有几种,采用的技术包括阻抗测量以及流式细胞计数。虽然这两种设计都有特殊的要求和困难,但它们都依赖精确、可靠和可重复的数据采集进行分析。想要了解设计过程中的注意事项和器件选择技巧吗?请看本文。 血液分析方式有几种,采用的 ...…

查看全部问答∨

【藏书阁】纳米粒子与纳米结构薄膜

目录: 第1章 电沉积量子点――通过半导体与衬底之间的晶格失配控制其尺寸  1.1 引言  1.2 CdSe/Au体系  1.3 半导体点阵间隔的调整――Cd(Se,Te)/Au  1.4 衬底点阵间隔的调整――CdSe/Pd  1.5 在Au和Pd衬底上沉积较厚的层CdS ...…

查看全部问答∨

如何隐藏CCommandber上那个输入法按钮

也可以用shfullscreen之类的函数隐藏吗…

查看全部问答∨

WINCE Pocket PC 里怎么使用随机函数?

如题,因为time.h不包括在WINCE里,所以不知道该如何取得random seed…

查看全部问答∨

LED是如何产生有色光的

LED的发光顏色和发光效率与製作LED的材料和製程有关,目前广泛使用的有红、绿、蓝三种。由於LED工作电压低(仅1.5-3V),能主动发光且有一定亮度,亮度又能用电压(或电流)调节,本身又耐冲击、抗振动、寿命长(10万小时)。製造LED的材料不同,可 ...…

查看全部问答∨

sim卡读写问题?

哪位大侠做过sim卡的读写驱动?麻烦给个例子,多谢.另外有个问题请教:当发送select 命令给sim卡时,发送如下数据0xA0, 0xA4, 0x00, 0x00, 0x02 (Select command)0x10, 0x7F (File ID, DF)返回 ...…

查看全部问答∨

用IAR时 怎样显示C语言调试界面,我试来试去调试窗口只有汇编代码

用IAR时 怎样显示C语言调试界面,我试来试去调试窗口只有汇编代码…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved