Untitled
unknown
plain_text
a year ago
3.5 kB
5
Indexable
#include <xc.h> #include<stdio.h> #include<stdlib.h> #include <time.h> #define _XTAL_FREQ 4000000 #pragma config OSC = INTIO67 //OSCILLATOR SELECTION BITS (INTERNAL OSCILLATOR BLOCK, PORT FUNCTION ON RA6 AND RA7) #pragma config WDT = OFF //Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit)) #pragma config PWRT = OFF //Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = ON //Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled)) #pragma config PBADEN = OFF //PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset) #pragma config LVP = OFF //Single-Supply ICSP Enable bit (Single-Supply ICSP disabled) #pragma config CPD = OFF //Data EEPROM Code Protection bit (Data EEPROM not code-protected) int id; int mode = 2; void banana(void) { int note2freq[] = {523,587,659,698,783,880,987,1046}; int i=0; long f = note2freq[id]*(mode+1); long p = 100000/f; long dur = 0; while(1){ LATCbits.LC1 = 1; i=p; while(i--){} LATCbits.LC1 = 0; i=p; while(i--){} dur += p; if(dur>7000) {break;} } // for(int n = 0; n<8; n+=1){ // long f = note2freq[n]*3; // long p = 100000/f; // long dur = 0; // while(1){ // LATCbits.LC0 = 1; // i=p; // while(i--){} // LATCbits.LC0 = 0; // i=p; // while(i--){} // dur += p; // if(dur>7000) {break;} // } // } return; } void button(void){ if (PORTBbits.RB1 == 0){ mode++; mode %= 3; __delay_us(800); return; } return; } //void __interrupt(high_priority)H_ISR(void){ // high_p(); // return; //} void __interrupt(high_priority)H_ISR(void){ //step4 int value = ADRES; PIR1bits.ADIF = 0; //do things if (value<975) banana(); //clear flag bit __delay_us(20); return; } void delay(unsigned int itime){ unsigned int i, j; for(i = 0; i < itime; i++){ for(j = 0; j < 255; j++){ } } } void main(void) { //configure OSC and port OSCCONbits.IRCF = 0b111; //1MHz TRISC = 0x00; TRISB = 0x0F; TRISA = 0xFF; //analog input port //step1 ADCON1bits.VCFG0 = 0; ADCON1bits.VCFG1 = 0; ADCON1bits.PCFG = 0b0110; //AN0 ?analog input,???? digital ADCON0bits.CHS = 0b0000; //AN0 ?? analog input ADCON2bits.ADCS = 0b000; //????000(1Mhz < 2.86Mhz) ADCON2bits.ACQT = 0b001; //Tad = 2 us acquisition time?2Tad = 4 > 2.4 ADCON0bits.ADON = 1; ADCON2bits.ADFM = 1; //left justified //step2 PIE1bits.ADIE = 1; PIR1bits.ADIF = 0; INTCONbits.PEIE = 1; INTCONbits.GIE = 1; // RCONbits.IPEN = 1; // INTCON3bits.INT1IF = 0; // INTCONbits.GIE = 1; // INTCON3bits.INT1IE = 1; // // IPR1bits.ADIP = 0; // INTCON3bits.INT1IP = 1; // INTCON2bits.RBIP = 1; //step3 while(1){ for(int i = 0; i < 5; i++){ id = i; ADCON0bits.CHS = (unsigned char)i; ADCON0bits.GO = 1; __delay_us(50); } button(); } return; }
Editor is loading...
Leave a Comment