Rev 3253 Rev 3295
1 #include "D:\PIC\VN\vn.h" 1 #include "vn.h"
2   2  
3   3  
4 //#define MAXDUTY (int16)160 // 50 kHz 4 //#define MAXDUTY (int16)160 // 50 kHz
5 #define MAXDUTY (int16)400 // 20 kHz 5 #define MAXDUTY (int16)400 // 20 kHz
6 //#define MAXDUTY (int16)800 // 10 kHz 6 //#define MAXDUTY (int16)800 // 10 kHz
7 #define HALFDUTY (int16)MAXDUTY/2 7 #define HALFDUTY (int16)MAXDUTY/2
8 //#define DIVISOR 199 // 10 kHz 8 //#define DIVISOR 199 // 10 kHz
9 #define DIVISOR 99 // 20 kHz 9 #define DIVISOR 99 // 20 kHz
10 //#define DIVISOR 39 // 50 kHz 10 //#define DIVISOR 39 // 50 kHz
11   11  
12 #define regreseM (2.02) 12 #define regreseM (2.02)
13 #define regreseN (-451) 13 #define regreseN (-451)
14   14  
15 void main() 15 void main()
16 { 16 {
17   17  
18 setup_adc_ports(sAN0|VSS_VDD); 18 setup_adc_ports(sAN0|VSS_VDD);
19 setup_adc(ADC_CLOCK_DIV_2); 19 setup_adc(ADC_CLOCK_DIV_2);
20 setup_spi(SPI_SS_DISABLED); 20 setup_spi(SPI_SS_DISABLED);
21 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 21 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
22 setup_timer_1(T1_DISABLED); 22 setup_timer_1(T1_DISABLED);
23 setup_timer_2(T2_DIV_BY_1,DIVISOR,1); 23 setup_timer_2(T2_DIV_BY_1,DIVISOR,1);
24 setup_ccp1(CCP_PWM); 24 setup_ccp1(CCP_PWM);
25 setup_ccp2(CCP_PWM); 25 setup_ccp2(CCP_PWM);
26 set_pwm1_duty(HALFDUTY); 26 set_pwm1_duty(HALFDUTY);
27 set_pwm2_duty(MAXDUTY); 27 set_pwm2_duty(MAXDUTY);
28 setup_comparator(NC_NC_NC_NC); 28 setup_comparator(NC_NC_NC_NC);
29 setup_oscillator(OSC_8MHZ); 29 setup_oscillator(OSC_8MHZ);
30   30  
31 set_adc_channel(0); 31 set_adc_channel(0);
32 delay_ms(500); 32 delay_ms(500);
33   33  
34 unsigned int16 reg; 34 unsigned int16 reg;
35 float given; 35 float given;
36 printf("Cvak\r\n"); 36 printf("Cvak\r\n");
37 37
38 reg=400; 38 reg=400;
39 given=regreseM*reg+regreseN; 39 given=regreseM*reg+regreseN;
40   40  
41 while(true) 41 while(true)
42 { 42 {
43 unsigned int16 value; 43 unsigned int16 value;
44 44
45 value = read_adc(); 45 value = read_adc();
46 if(kbhit()) 46 if(kbhit())
47 { 47 {
48 char c; 48 char c;
49 49
50 set_pwm2_duty((int16)MAXDUTY); 50 set_pwm2_duty((int16)MAXDUTY);
51 c=getc(); 51 c=getc();
52   52  
53 if(c=='u') 53 if(c=='u')
54 { 54 {
55 if (reg<600) reg++; 55 if (reg<600) reg++;
56 printf("up*"); 56 printf("up*");
57 } 57 }
58   58  
59 if(c=='d') 59 if(c=='d')
60 { 60 {
61 if (reg>250) reg--; 61 if (reg>250) reg--;
62 printf("down*"); 62 printf("down*");
63 } 63 }
64   64  
65 if((c>='a')&&(c<='z')) 65 if((c>='a')&&(c<='z'))
66 { 66 {
67 given=regreseM*reg+regreseN; 67 given=regreseM*reg+regreseN;
68 printf("reg: %Lu\r\n",reg); 68 printf("reg: %Lu\r\n",reg);
69 } 69 }
70 } 70 }
71   71  
72 if (value >= given) 72 if (value >= given)
73 { 73 {
74 set_pwm2_duty((int16)MAXDUTY); 74 set_pwm2_duty((int16)MAXDUTY);
75 } 75 }
76 else 76 else
77 { 77 {
78 set_pwm2_duty((int16)255); 78 set_pwm2_duty((int16)255);
79 } 79 }
80 delay_us(200); 80 delay_us(200);
81 } 81 }
82 } 82 }