智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4087|回复: 4
打印 上一主题 下一主题

求mc9s12xs128流水灯程序

[复制链接]

1

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
109
威望
172
贡献
27
兑换币
0
注册时间
2010-11-15
在线时间
0 小时
跳转到指定楼层
1#
发表于 2010-11-15 16:29:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求mc9s12xs128流水灯程序

12

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2094
威望
1016
贡献
560
兑换币
632
注册时间
2012-11-29
在线时间
259 小时
5#
发表于 2012-12-21 17:54:18 | 只看该作者
很好啊啊呵呵
回复 支持 反对

使用道具 举报

5

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1129
QQ
威望
497
贡献
326
兑换币
204
注册时间
2012-10-14
在线时间
153 小时
4#
发表于 2012-11-17 23:15:18 | 只看该作者

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define uint unsigned int
#define uchar unsigned char

//同51和AVR的延时函数完全保持一致
void delay_ms(uint del) {

  uint i,j;
  for(i=0;i<del;i++)
  for(j=0;j<1827;j++);
}
//各种端口初始化
void port_init() {

   DDRB=0XFF;
   PORTB=0XFF;
}

//例程中所给的流水灯程序
/*void main() {
  uchar temp;
  DDRB=0XFF;
  temp=0;
  while(1) {
  
    switch(temp) {
   
      case 0: PORTB=0XFE;break;
      case 1: PORTB=0XFd;break;
      case 2: PORTB=0XFb;break;
      case 3: PORTB=0XF7;break;
      case 4: PORTB=0XEF;break;
      case 5: PORTB=0XDF;break;
      case 6: PORTB=0XBF;break;
      case 7: PORTB=0X7F;break;
    }
    temp++;
    if(temp==8) {
   
        temp=0;
    }
    delay_ms(500);
  }

} */


//完全从51单片机程序中移植过来的流水灯程序
void main() {

    uchar temp;
    uchar i;
    port_init();
   // DDRB=0XFF;
    while(1) {
   
        temp=0xfe;
        for(i=0;i<8;i++){
        
            PORTB=temp;
            delay_ms(50);
            temp=temp<<1; /*** 注意此处的变量temp变量是如何进行运算的
            开始时为1111 1110经过左移一位之后变为1111 1100左边的数字溢出,右边的数字
            补0,如果想要实现移位则需要将1111 1100与0000 00001进行或运算,以此来实现
            移位的运算****/
            temp =temp|0x01;
        }
    }
}

/***通过此程序可以看出MC9S12XS的程序和AVR单片机完全可以移植过来,只不过是在寄存器
的配置上会有所不同罢了 ***/
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
873
威望
420
贡献
255
兑换币
218
注册时间
2012-11-4
在线时间
99 小时
毕业学校
鲁西南大学
3#
发表于 2012-11-15 19:21:35 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
unsigned char Data1[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
void Delay(unsigned int Time)
{
    unsigned char i;
    for(i=0; i<200; i++)
        for( Time=200; Time>0; Time--);
}
void main(void)
{
  unsigned char i;
  DDRB=0xFF;

  while(1)
  {
    for(i=0;i<8;i++)
    {
      PORTB=Data1[i];
      Delay(50000);
      Delay(50000);
     }
     if(i==8)
      {
      for(i=7;i>0;i--)
      {
      PORTB=Data1[i];
      Delay(50000);
      Delay(50000);
      }
    }
  }
}

新手··初学、共同进步~~
回复 支持 反对

使用道具 举报

10

主题

146

帖子

0

精华

金牌会员

将军

Rank: 6Rank: 6

积分
2189
QQ
威望
423
贡献
1652
兑换币
0
注册时间
2010-11-13
在线时间
57 小时
2#
发表于 2010-11-18 16:22:11 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

       char a=0;
   void PLL_int(void);

void main(void)
{   //int a;
   DDRA=0xFF;
                        // PORTA=0XFE;                  /* put your own code here */
   PLL_int();
   CRGINT_RTIE=1;
  
    RTICTL=0xF9;
           EnableInterrupts;
  for(;;)
   {
    _FEED_COP();              /* feeds the dog */
   }                        /* loop forever */
                           /* please make sure that you never leave main */
}
       void PLL_int() {
      
       CLKSEL_PLLSEL=0;
      POSTDIV=0;
      SYNR=0x44;
      REFDV=0x81;   
      while(!CRGFLG_LOCK);
       CLKSEL_PLLSEL=1;
       }
       #pragma CODE_SEG NON_BANKED
      void interrupt RTI_ISR()
      
       {               
         CRGFLG_RTIF=1;
          a=a<<1;
         if( a==0  )
         a=1; PORTA=a;
       }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 16:37 , Processed in 0.049352 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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