我把p3.4设置成了快速,推挽输出。CPU时钟配到了32M
我的芯片需要的时序图是最小的时间是200ns
我的测试代码如下:
- #include "config.h"
- #include "led.h"
-
- //#define RGB_WriteBite(n) {n ?
- // : P34 = 0;}
-
- void delay_ns(uint16_t ns)
- {
- do
- {
- NOP(1); //(MAIN_Fosc + 500000) / 100000 - 6
- } while (--ns);
- }
-
- void RGB_WriteByte(uint8_t val)
- {
- uint8_t i;
- for(i = 0; i < 8; i++){
- if(val & (0x80 >> i)){
- P34 = 1;
- delay_ns(2);
- P34 = 0;
- // delay_ns(1);
- }else{
- P34 = 1;
- delay_ns(1);
- P34 = 0;
- // delay_ns(1);
- }
- }
- }
-
-
-
- void led_SetColor(uint8_t r, uint8_t g, uint8_t b)
- {
- uint8_t i;
- P34 = 0;
- for(i = 0; i < 5; i++){
- RGB_WriteByte(r);
- RGB_WriteByte(g);
- RGB_WriteByte(b);
- }
- P34 = 0;
- }
-
- void led_Open()
- {
- led_SetColor(0x00,0xFF,0x00);
- // P34 = 1;
- // delay_ns(3);
- // P34 = 0;
- // delay_ns(1);
- }
复制代码
不管我怎么调整这个delay都不可以达到想要的时序。有大佬给点什么建议么? |