19-05-2013, 12:46 AM | #34 |
Nhập môn đệ tử
Tham gia ngày: Jan 2013
Bài gửi: 2
: |
các bác ơi. ai giup mình viết lại đoạn code này thành HTC được ko, chứ viết kiểu này mình ko hiểu, cho mình hỏi lun mấy cai thông số cài đặt timer0 là sao vậy
"#include<p18f4550.h> #pragma config FOSC = HSPLL_HS // Using 20 MHz crystal with PLL #pragma config PLLDIV = 5 // Divide by 5 to provide the 96 MHz PLL with 4 MHz input #pragma config CPUDIV = OSC1_PLL2 // Divide 96 MHz PLL output by 2 to get 48 MHz system clock #pragma config USBDIV = 2 // USB clock comes from 96 MHz PLL output / 2 #pragma config IESO = OFF // Disable Oscillator Switchover mode #pragma config PWRT = OFF // Disable Power-up timer #pragma config BOR = OFF // Disable Brown-out reset #pragma config VREGEN = ON // Use internal USB 3.3V voltage regulator #pragma config WDT = OFF // Disable Watchdog timer #pragma config MCLRE = ON // Enable MCLR Enable #pragma config LVP = OFF // Disable low voltage ICSP #pragma config ICPRT = OFF // Disable dedicated programming LAT (44-pin devices) #pragma config CP0 = OFF // Disable code protection void timer0_2500(); void capnhat(),test_tay(),dungyen(); void ngatmuccao(void); void timer0_10(); volatile unsigned char i=0,j=0,H=0xFF,L=0xE1; volatile unsigned int pulse_max,pulse_top,set = 2000; //-------------------------------------------------------------------- volatile unsigned int SERVO[16]; void delay_us( int x) { int i; for(i=0;i<x;i++) {} } void delay_ms( int x) { int i; for(i=0;i<x;i++) { delay_us(1000); } } void timer0_10() { T0CONbits.TMR0ON = 0; // timer off T0CONbits.T0PS0 = 1; //1:4 PRESCALER T0CONbits.T0PS1 = 0; T0CONbits.T0PS2 = 0; T0CONbits.PSA = 0; T0CONbits.T0SE = 0; T0CONbits.T0CS = 0; // CLK SOURCE T0CONbits.T08BIT = 0; //16 BIT TIMER RCONbits.IPEN = 1; //enable priority levels INTCONbits.TMR0IE = 1; // enable interrupts, disable toan bo ngat chi cho phep ngat TMR0 INTCON2 = 0x04; //thiet lap TMR0 la ngat uu tien cao INTCONbits.GIEH = 1; //cho phep ngat toan cuc TMR0L = L; TMR0H = H; T0CONbits.TMR0ON = 1; // timer on } void main() { TRISD = TRISE = TRISBbits.TRISB4 = TRISBbits.TRISB5 = TRISAbits.TRISA4 =0; /* TRISBbits.TRISB4 = 0; TRISBbits.TRISB5 = 0; TRISEbits.TRISE2 = 0; TRISEbits.TRISE1 = 0; TRISEbits.TRISE0 = 0; TRISDbits.TRISD0 = 0; TRISDbits.TRISD2 = 0; TRISDbits.TRISD1 = 0;*/ LATD = 0X00; timer0_10(); //------------------------------------------------------- //vay tay chao SERVO[2]=1920; //gap vai trai giua SERVO[3]=1959; //gap vai phai giua delay_ms(100); SERVO[0]=1885;//tay trai xuong delay_ms(100); SERVO[1]=1870;//tay phai len delay_ms(100); // vay tay chao-------- for (i=0;i<3;i++) { SERVO[3]=1965; //gap vai phai len SERVO[4]=1900; //quay dau sang trai delay_ms(100); SERVO[3]=1930; //gap vai phai xuong SERVO[4]=1945; //quay dau sang phai delay_ms(100); } while(1) { test_tay(); } } // vec to ngat uu tien cao #pragma code InterruptVectorHigh=0x08 void InterruptVectorHigh(void) { _asm goto ngatmuccao //nhay toi chuong trinh ngat _endasm } //---------------------------------------------------------------------------- // chuong trinh ngat muc uu tien cao #pragma code #pragma interrupt ngatmuccao void ngatmuccao() { if (INTCONbits.TMR0IF) { pulse_max++; // Pulse Max Increment pulse_top++; // Pulse Top Increment if (pulse_max >= set) { pulse_max=0; pulse_top=0; LATD = 0X00; LATE = 0X00; } if (pulse_top == SERVO[0]) LATDbits.LATD0 =1; //vai trai if (pulse_top == SERVO[1]) LATDbits.LATD1 =1; //canh trai if (pulse_top == SERVO[2]) LATDbits.LATD2 =1; if (pulse_top == SERVO[3]) LATDbits.LATD3 =1; if (pulse_top == SERVO[4]) LATDbits.LATD4 =1; if (pulse_top == SERVO[5]) LATDbits.LATD5 =1; if (pulse_top == SERVO[6]) LATDbits.LATD6 =1; if (pulse_top == SERVO[7]) LATDbits.LATD7 =1; if (pulse_top == SERVO[8]) LATEbits.LATE2 =1; //vai phai if (pulse_top == SERVO[9]) LATEbits.LATE1 =1; //canh phai if (pulse_top == SERVO[10]) LATEbits.LATE0 =1; if (pulse_top == SERVO[11]) LATAbits.LATA4 =1; if (pulse_top == SERVO[12]) LATBbits.LATB5 =1; if (pulse_top == SERVO[13]) LATBbits.LATB4 =1; if (pulse_top == SERVO[14]) LATBbits.LATB3 =1; if (pulse_top == SERVO[15]) LATBbits.LATB2 =1; TMR0L = L; TMR0H = H; INTCONbits.TMR0IF = 0; } } " |
|
|
Similar Threads | ||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Cách giao tiếp DS1877 và PIC6F877A | nbqvdp | Cơ bản về vi điều khiển và PIC | 7 | 05-08-2010 06:46 PM |
Hỏi về chương trình HTPIC của ngohaibac | riquelme | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 26 | 20-01-2007 09:42 PM |
Giúp đỡ về HTPIC | riquelme | Cơ bản về vi điều khiển và PIC | 0 | 11-01-2007 11:56 PM |
Giao tiếp Pic6f877A qua cổng máy in???? | spirit | Cơ bản về vi điều khiển và PIC | 8 | 11-09-2006 01:04 PM |