智能车制作
标题:
大家,进来,看看!!
[打印本页]
作者:
kuku
时间:
2009-4-28 23:43
标题:
大家,进来,看看!!
小弟,刚学单片机!!想做一个,跑马灯的程序!!请高手帮帮忙!!
要求:15个LED,第一步,1,5,9,13先亮,
第二步,2,6,10,14亮,
第三步,3,7,11,15亮,
最后,4,8,12亮,
一直循环下去!!I/O 口输出!!(9S128DG)
麻烦大家了!!
作者:
chenrunshe_007
时间:
2009-4-29 08:15
哪来15个LED?一般都是B口的8个或者两个口级联16个
作者:
kuku
时间:
2009-4-29 14:04
我不太明白!!我只是,在PORTB和PORTA上都接上了!!
作者:
whut_wj
时间:
2009-4-29 18:39
你理解输出1是高电症,输出0是低电平即可.
作者:
sampan
时间:
2009-4-30 13:25
用汇编的话,可以选用查表指令,感觉简单,只要编辑表就行了。
随便贴个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);
}
}
作者:
sampan
时间:
2009-4-30 13:37
不好意思啊,又是我,发觉刚刚的程序不够简化,还有错误,对不起,我的机子只有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);
}
}
}
作者:
kuku
时间:
2009-5-1 08:29
谢谢大家,对我的支持!!我昨天,考虑了一下!!写的这个!可以运行!!
#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;
}
}
}
作者:
kuku
时间:
2009-5-1 08:47
谢谢sampan !!
我运行了一下,B口是对的!!但A口输出,异常!!
谢谢,您的解释!!
上面一帖,是我编的!!请批评,指正!!
我的QQ是,274037250,有机会,咱们讨论讨论!!
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2