智能车制作
标题: 新手求跑马灯程序 [打印本页]
作者: 1426906551 时间: 2012-5-25 06:25
标题: 新手求跑马灯程序
谁能帮我用以下中断程序为XS128编写一个跑马灯程序。
谢谢。
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
byte count=0;//中断计数变量
static void RTI_Init(void)
{
RTICTL=0xF7; //16M/1.6×(10^6) =10Hz,1ms
CRGINT=0x80; //启用实时中断
}
void main(void)
{
DDRB=0XFF;//B口设置为输出
PORTB=0XAA; //B口输出10101010
RTI_Init();
EnableInterrupts;
for(;;)
{
_FEED_COP(); /* feeds the dog */
} /* loop forever */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 7 RTI_ISR(void)
{
//添加中断处理,100ms 中断一次
count++;
if(count==10)//10次中断,1s时间到
{
PORTB=~PORTB;//B口取反
count=0;
}
CRGFLG|=0X80;//清除中断标志
}
作者: 星斗520 时间: 2012-5-25 14:05
本帖最后由 星斗520 于 2012-5-25 14:07 编辑
如果你这个函数能用 就可以这样
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
byte count=0;//中断计数变量
unsigned char temp=0x01;
static void RTI_Init(void)
{
RTICTL=0xF7; //16M/1.6×(10^6) =10Hz,1ms
CRGINT=0x80; //启用实时中断
}
void main(void)
{
DDRB=0XFF;//B口设置为输出
PORTB=0XAA; //B口输出10101010
RTI_Init();
EnableInterrupts;
for(;;)
{
_FEED_COP(); /* feeds the dog */
} /* loop forever */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 7 RTI_ISR(void)
{
//添加中断处理,100ms 中断一次
count++;
if(count==10)//10次中断,1s时间到
{
PORTB=temp;//
count=0;
temp<<=1;
if(temp==0)
temp=0x01;
}
CRGFLG|=0X80;//清除中断标志
}
作者: 1426906551 时间: 2012-5-26 14:03
没有达到预期效果,似乎temp=0x01改为temp=~0x01会好一些。
但XS128上也只有7个灯会亮。开始亮的灯也不会灭。
能再帮我改一改程序,或说一说为什么出现这种情况吗?
欢迎光临 智能车制作 (http://dns.znczz.com/) |
Powered by Discuz! X3.2 |