智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3550|回复: 7
打印 上一主题 下一主题

大家,进来,看看!!

[复制链接]

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
威望
177
贡献
22
兑换币
0
注册时间
2009-4-2
在线时间
24 小时
跳转到指定楼层
1#
发表于 2009-4-28 23:43:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟,刚学单片机!!想做一个,跑马灯的程序!!请高手帮帮忙!!
要求:15个LED,第一步,1,5,9,13先亮,
                       第二步,2,6,10,14亮,
                       第三步,3,7,11,15亮,
                      最后,4,8,12亮,
                      一直循环下去!!I/O 口输出!!(9S128DG)
麻烦大家了!!

21

主题

1019

帖子

0

精华

常驻嘉宾

我爱雯婕

Rank: 8Rank: 8

积分
4657
威望
2223
贡献
1682
兑换币
4
注册时间
2009-3-4
在线时间
376 小时
2#
发表于 2009-4-29 08:15:15 | 只看该作者
哪来15个LED?一般都是B口的8个或者两个口级联16个
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
威望
177
贡献
22
兑换币
0
注册时间
2009-4-2
在线时间
24 小时
3#
 楼主| 发表于 2009-4-29 14:04:15 | 只看该作者
我不太明白!!我只是,在PORTB和PORTA上都接上了!!
回复 支持 反对

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
4#
发表于 2009-4-29 18:39:58 | 只看该作者
你理解输出1是高电症,输出0是低电平即可.
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
威望
176
贡献
22
兑换币
0
注册时间
2009-4-7
在线时间
10 小时
5#
发表于 2009-4-30 13:25:37 | 只看该作者
用汇编的话,可以选用查表指令,感觉简单,只要编辑表就行了。
随便贴个c的,也是最简单的赋值。
void Delay(unsigned long n)
{
  
      while(n--);
}

void main(void)
{
  DDRA =0XFF;
  DDRB =0XFF;
  for(;;)
  {
   PORTA =0X70;
   PORTB =0X77;
   Delay(10000);
   PORTA =0XBB;
   PORTB =0XBB;
   Delay(10000);
   PORTA =0XDD;
   PORTB =0XDD;
   Delay(10000);
   PORTA =0XEE;
   PORTB =0XEE;
   Delay(10000);
  }
}
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
威望
176
贡献
22
兑换币
0
注册时间
2009-4-7
在线时间
10 小时
6#
发表于 2009-4-30 13:37:40 | 只看该作者
不好意思啊,又是我,发觉刚刚的程序不够简化,还有错误,对不起,我的机子只有B口有led
程序如下,如果有错,希望通知一下谢谢。
void Delay(unsigned long n)
{
  
      while(n--);
}

void main(void)
{ unsigned char i,j;
  DDRA =0XFF;
  DDRB =0XFF;
  for(;;)
  {
    i=0X88;
    for(j=1;j<4;j++)
    {
      PORTA =~i;
      PORTB =~i;
      i >>=1;
     Delay(10000);
    }
  }
}
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
威望
177
贡献
22
兑换币
0
注册时间
2009-4-2
在线时间
24 小时
7#
 楼主| 发表于 2009-5-1 08:29:28 | 只看该作者
谢谢大家,对我的支持!!我昨天,考虑了一下!!写的这个!可以运行!!
#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

   int counter;
  void timeoverflow(void)
{   while(TCNT!=0X0000);
while(TCNT==0X0000);
counter++;
if(counter==4) PORTB=0xf7,PORTA=0x88;
if(counter==3) PORTB=0xbb,PORTA=0x44;
if(counter==2) PORTB=0xdd,PORTA=0x22;
if(counter==1) PORTB=0xee,PORTA=0x11;
}


void main()
{
  
TSCR1=0X80;
TSCR2=0X07;
  counter=0;
DDRA=0XFF;
DDRB=0XFF;
PORTA=0XFF;
PORTB=0XFF;

     EnableInterrupts;
  
  for(;;)
  {
   timeoverflow();  

        if(counter>=4)
      
        {
          counter=0;
        }
  }
}
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
威望
177
贡献
22
兑换币
0
注册时间
2009-4-2
在线时间
24 小时
8#
 楼主| 发表于 2009-5-1 08:47:10 | 只看该作者
谢谢sampan !!
我运行了一下,B口是对的!!但A口输出,异常!!
谢谢,您的解释!!
上面一帖,是我编的!!请批评,指正!!
我的QQ是,274037250,有机会,咱们讨论讨论!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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