为什么简单的走马灯程序居然会在开发板上运行不了??
- UID
- 343903
- 性别
- 男
|
为什么简单的走马灯程序居然会在开发板上运行不了??
程序编译通过了,可是单步调试时在延时部分就不能运行,连续运行时总是报非法中断而且只点亮一个灯LED1,请问这是我延时函数写的不对吗?
#include /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ #include "self.h" /************************************************************** Define the LED perameters **************************************************************/ #define LED1 PTDD_PTDD4 #define LED1DIR PTDDD_PTDDD4 #define LED2 PTDD_PTDD5 #define LED2DIR PTDDD_PTDDD5 #define LED3 PTDD_PTDD6 #define LED3DIR PTDDD_PTDDD6 #define LED4 PTDD_PTDD7 #define LED4DIR PTDDD_PTDDD7 #define LED5 PTCD_PTCD4 #define LED5DIR PTCDD_PTCDD4
#define LED_ON 0 #define LED_OFF 1 #define DDIR_OUTPUT 1 #define DDIR_INPUT 0
#define LED_INIT_MACRO LED1 = LED_OFF; \ LED2 = LED_OFF; \ LED3 = LED_OFF; \ LED4 = LED_OFF; \ LED5 = LED_OFF; \ LED1DIR = DDIR_OUTPUT; \ LED2DIR = DDIR_OUTPUT; \ LED3DIR = DDIR_OUTPUT; \ LED4DIR = DDIR_OUTPUT; \ LED5DIR = DDIR_OUTPUT; void WalkLED_1x(void); void WalkLED_2x(void); void Delay(UINT8 x); /*********************************************** Main ***********************************************/ void main(void) {
LED_INIT_MACRO for(;;) { WalkLED_1x(); WalkLED_2x();
} }
void WalkLED_1x(void){ LED1=LED_ON; Delay(255); LED1=LED_OFF; LED2=LED_ON; Delay(255); LED2=LED_OFF; LED3=LED_ON; Delay(255); LED3=LED_OFF; LED4=LED_ON; Delay(255); LED4=LED_OFF; }
void WalkLED_2x(void){ LED1=LED_ON; Delay(100); LED1=LED_OFF; LED2=LED_ON; Delay(100); LED2=LED_OFF; LED3=LED_ON; Delay(100); LED3=LED_OFF; LED4=LED_ON; Delay(100); LED4=LED_OFF; }
void Delay(UINT8 x){ UINT8 Tempvalue;
for(Tempvalue=0;Tempvalue<x; Tempvalue++)
for(Tempvalue=0;Tempvalue<10;Tempvalue++) ; }
[此贴子已经被作者于2007-6-1 16:07:17编辑过] |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
你这个循环延时程序永远也无法结束吧。仔细检查一下。 |
|
|
|
|
|
- UID
- 160932
- 性别
- 男
|
我觉着也是,你把内外循环的变量别用一个变量名,换个试试 |
|
|
|
|
|
- UID
- 343883
- 性别
- 男
|
|
|
|
|
|
- UID
- 343999
- 性别
- 男
|
LED1=LED_OFF;
LED2=LED_ON;
中间没有延时! |
\',\'\'\'\',\'\'\',,,;,.\',\'\'\',,\',.╭⌒╮⌒╮\',\'\';;
⌒╮\'╭⌒╮⌒╮.宠辱不惊,看庭前花开花落;;
╱◥██◣\'\';\',,,,;\';\';\'\'\';,\'.\'\',\'\'\'\',\';;
︱田︱田田| ⌒╮去留无意,望天空云卷云舒;;
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ |
|
|
|
|
|
- UID
- 344140
- 性别
- 男
|
呵呵
这个程序的delay是一个永远不能退出的循环!
如果x小于10的话,这个循环是没有问题的!
void Delay(UINT8 x){
UINT8 Tempvalue;
for(Tempvalue=0;Tempvalue
//在这里,Tempvalue最大只能是11
for(Tempvalue=0;Tempvalue<10;Tempvalue++)
; //在这里,Tempvalue只能等于10
}
不知道搂主这样做的意义何在? |
|
|
|
|
|