Hallo, was muss ich in der delay.c und delay.h ändern, damit es mit 40Mhz läuft. Zur Zeit läuft es bis 12Mhz, ich brauch aber 40MHz. Das sind die delays von eine Hitech C Compiler, Delay.h:
1 | #ifndef XTAL_FREQ
|
2 | #define XTAL_FREQ 10MHZ /* Crystal frequency in MHz */ |
3 | #endif
|
4 | |
5 | #define MHZ *1000L /* number of kHz in a MHz */ |
6 | #define KHZ *1 /* number of kHz in a kHz */ |
7 | |
8 | #if XTAL_FREQ <= 12MHZ
|
9 | |
10 | #define DelayUs(x) { unsigned char _dcnt; \
|
11 | _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
|
12 | while(--_dcnt != 0) \
|
13 | continue; }
|
14 | #else
|
15 | |
16 | #define DelayUs(x) { unsigned char _dcnt; \
|
17 | _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
|
18 | while(--_dcnt != 0) \
|
19 | continue; }
|
20 | #endif
|
21 | |
22 | extern void DelayMs(unsigned int); |
Delay.c:
1 | #include "delay.h" |
2 | |
3 | void
|
4 | DelayMs(unsigned int cnt) |
5 | {
|
6 | #if XTAL_FREQ <= 2MHZ
|
7 | do { |
8 | DelayUs(996); |
9 | } while(--cnt); |
10 | #endif
|
11 | |
12 | #if XTAL_FREQ > 2MHZ
|
13 | unsigned char i; |
14 | do { |
15 | i = 4; |
16 | do { |
17 | DelayUs(250); |
18 | } while(--i); |
19 | } while(--cnt); |
20 | #endif
|
21 | }
|