Tải bản đầy đủ (.docx) (33 trang)

BÀI tập môn VI điều KHIỂN NÂNG CAO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (123.58 KB, 33 trang )

BÀI TẬP MÔN VI ĐIỀU KHIỂN NÂNG CAO
1. Thiết kế ứng dụng với ngắt ngoài
Bài 01. Lập trình đếm sản phẩm trên chân ngắt INT0 và hiển thị trên 3 led 7
thanh
theo phương pháp quét led.
#include
#include<delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define led1 PORTEbits.RE0
#define led2 PORTEbits.RE1
#define led3 PORTEbits.RE2
unsigned int SP;
unsigned char maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void ngat_ngoai(void);
#pragma code uu_tien_cao = 0x08
void ngat_cao(void)
{
ngat_ngoai(); //g?i đ?n CTCPVN
}
#pragma code
#pragma interrupt ngat_ngoai
void ngat_ngoai(void)
{
if (INTCONbits.INT0IF==1)
{
SP++;
INTCONbits.INT0IF=0;
}


}
void main()
{
1


TRISB=0XFF;
TRISD=0X00;
TRISE=0X00;
ADCON1=0X0F;
INTCONbits.INT0IE=1;
INTCONbits.INT0IF=0;
INTCON2bits.INTEDG0=1;
RCONbits.IPEN=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
SP=123;
while(1)
{
led1=1;led2=0;led3=0;
PORTD=maled[SP/100];
Delay10KTCYx(5);
led1=0;led2=1;led3=0;
PORTD=maled[(SP%100)/10];
Delay10KTCYx(5);
led1=0;led2=0;led3=1;
PORTD=maled[(SP%100)%10];
Delay10KTCYx(5);
}
}

Bài 02. Lập trình đếm sản phẩm trên chân ngắt INT1 và hiển thị trên 4 led 7
thanh
theo phương pháp quét led.
#include
#include<delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define led1 PORTCbits.RC0
#define led2 PORTCbits.RC1
2


#define led3 PORTCbits.RC2
#define led4 PORTCbits.RC3
unsigned int SP;
unsigned char maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void ngat_ngoai(void);
#pragma code uu_tien_cao = 0x08
void ngat_cao(void)
{
}
#pragma code
#pragma interrupt ngat_ngoai
void ngat_ngoai(void)
{
if (INTCON3bits INT1IF==1)
{
SP++;

INTCON3bits.INT1IF=0;
}
}
void main()
{
TRISB=0XFF;
TRISD=0X00;
TRISC=0X00;
ADCON1=0X0F;
INTCON3bits.INT1IE=1;
INTCON3bits.INT1IP=1;
INTCON3bits.INT1IF=0;
INTCON2bits.INTEDG1=1;
RCONbits.IPEN=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
SP=1234;
while(1)
3


{
led1=1;led2=0;led3=0;led4=0;
PORTD=maled[SP/1000];
Delay10KTCYx(1);
led1=0;led2=1;led3=0;led4=0;
PORTD=maled[((SP%1000)/100)];
Delay10KTCYx(1);
led1=0;led2=0;led3=1;led4=0;
PORTD=maled[(((SP%1000)%100)/10)];

Delay10KTCYx(1);
led1=0;led2=0;led3=0;led4=1;
PORTD=maled[(((SP%1000)%100)%10)];
Delay10KTCYx(1);
}
}

Bài 03. Lập trình đếm sản phẩm trên chân ngắt INT1 và hiển thị trên LCD (số
sản phẩm có thể hiển thị từ 00 đến 99).
#include
#include<delays.h>
#include<stdio.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
#define LCD_RS PORTEbits.RE0
#define LCD_RW PORTEbits.RE1
#define LCD_EN PORTEbits.RE2
void Lcd_configure(void);
void Lcd_Write_Command(char command);
void Lcd_Write_Data(char data);
void Lcd_Write_String(char*str);
void Lcd_configure(void)
4


{
Lcd_Write_Command(0x01);

Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x0c);
}
void Lcd_Write_Command(char command)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= command;
LCD_EN=0;
Delay1KTCYx(5);
}
void Lcd_Write_Data(char data)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= data;
LCD_EN=0;
Delay1KTCYx(5);
}
void Lcd_Write_String(char*str)
{
while(*str)
{
Lcd_Write_Data(*str);
str++;
}

}
unsigned int SP;
void ngat_ngoai(void);
5


#pragma code uu_tien_cao = 0x08
void ngat_cao(void)
{
ngat_ngoai();
}
#pragma code
#pragma interrupt ngat_ngoai
void ngat_ngoai(void)
{
if (INTCON3bits.INT1IF==1)
{
SP++;
INTCON3bits.INT1IF=0;
}
}
void main()
{
TRISB=0XFF;
TRISD=0X00;
TRISE=0X00;
ADCON1=0X0F;
INTCON3bits.INT1IE=1;
INTCON3bits.INT1IP=1;
INTCON3bits.INT1IF=0;

INTCON2bits.INTEDG1=1;
RCONbits.IPEN=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
Lcd_configure();
SP=12;
while(1)
{
Lcd_Write_Command(0x80);
Lcd_Write_Data((SP/10)+0x30);
Lcd_Write_Data((SP%10)+0x30);
6


}
}
Bài 04. Lập trình đếm sản phẩm trên chân ngắt INT1 và hiển thị trên LCD (số
sản
phẩm có thể hiển thị từ 0000 đến 9999).
#include
#include<delays.h>
#include<stdio.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
#define LCD_RS PORTCbits.RC0
#define LCD_RW PORTCbits.RC1
#define LCD_EN PORTCbits.RC2

unsigned int sp;
void ngat_ngoai(void);
#pragma code uu_tien_cao = 0x08
void ngat_cao(void)
{
ngat_ngoai();
}
#pragma code
#pragma interrupt ngat_ngoai
void ngat_ngoai(void)
{
if (INTCON3bits.INT1IF==1)
{
sp++;
}
INTCON3bits.INT1IF=0;
}
void Lcd_configure(void);
7


void Lcd_Write_Command(char command);
void Lcd_Write_Data(char data);
void Lcd_Write_String(char*str);
void Lcd_configure(void)
{
Lcd_Write_Command(0x01);
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);

Lcd_Write_Command(0x0c);
}
void Lcd_Write_Command(char command)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= command;
LCD_EN=0;
Delay1KTCYx(5);
}
void Lcd_Write_Data(char data)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= data;
LCD_EN=0;
Delay1KTCYx(5);
}
void Lcd_Write_String(char*str)
{
while(*str)
{
Lcd_Write_Data(*str);
str++;
8


}

}
void main()
{
TRISB=0XFF;
TRISD=0X00;
TRISC=0X00;
ADCON1=0X0F;
INTCON3bits.INT1IE=1;
INTCON3bits.INT1IF=0;
INTCON3bits.INT1IP=1;
RCONbits.IPEN=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
INTCON2bits.INTEDG1=1;
sp=1234;
Lcd_configure();
while(1)
{
Lcd_Write_Command(0x80);
Lcd_Write_Data((sp/1000)+0x30);
Lcd_Write_Data(((sp%1000)/100)+0x30);
Lcd_Write_Data((((sp%1000)%100)/10)+0x30);
Lcd_Write_Data((((sp%1000)%100)%10)+0x30);
}
}

Bài 05. Lập trình đếm sản phẩm trên chân ngắt INT2 và hiển thị trên LCD (số
sản phẩm có thể hiển thị từ 0000 đến 9999).
#include
#include<delays.h>

#include<stdio.h>
#pragma config OSC=HS
9


#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
#define LCD_RS PORTCbits.RC0
#define LCD_RW PORTCbits.RC1
#define LCD_EN PORTCbits.RC2
unsigned int sp;
void ngat_ngoai(void);
#pragma code uu_tien_cao = 0x08
void ngat_cao(void)
{
ngat_ngoai(); //g?i đ?n CTCPVN
}
#pragma code
#pragma interrupt ngat_ngoai
void ngat_ngoai(void)
{
if (INTCON3bits.INT2IF==1)
{
sp++;
}
INTCON3bits.INT2IF=0;
}
void Lcd_configure(void);

void Lcd_Write_Command(char command);
void Lcd_Write_Data(char data);
void Lcd_Write_String(char*str);
void Lcd_configure(void)
{
Lcd_Write_Command(0x01);
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);
Lcd_Write_Command(0x0c);
10


}
void Lcd_Write_Command(char command)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= command;
LCD_EN=0;
Delay1KTCYx(5);
}
void Lcd_Write_Data(char data)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= data;
LCD_EN=0;

Delay1KTCYx(5);
}
void Lcd_Write_String(char*str)
{
while(*str)
{
Lcd_Write_Data(*str);
str++;
}
}
void main()
{
TRISB=0XFF;
TRISD=0X00;
TRISC=0X00;
ADCON1=0X0F;
INTCON3bits.INT2IE=1;
INTCON3bits.INT2IF=0;
11


INTCON3bits.INT2IP=1;
RCONbits.IPEN=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
INTCON2bits.INTEDG2=1;
sp=1234;
Lcd_configure();
while(1)
{

Lcd_Write_Command(0x80);
Lcd_Write_Data((sp/1000)+0x30);
Lcd_Write_Data(((sp%1000)/100)+0x30);
Lcd_Write_Data((((sp%1000)%100)/10)+0x30);
Lcd_Write_Data((((sp%1000)%100)%10)+0x30);
}
}

Bài 06. Lập trình đếm tăng sản phẩm trên chân ngắt INT1, đếm lùi trên chân
ngắt INT2 và hiển thị trên LCD (số sản phẩm có thể hiển thị từ 000 đến 999).
#include
#include<delays.h>
#include<stdio.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
#define LCD_RS PORTCbits.RC0
#define LCD_RW PORTCbits.RC1
#define LCD_EN PORTCbits.RC2
unsigned int sp;
void ngat_ngoai(void);
#pragma code uu_tien_cao = 0x08
12


void ngat_cao(void)
{
ngat_ngoai(); //g?i đ?n CTCPVN

}
#pragma code
#pragma interrupt ngat_ngoai
void ngat_ngoai(void)
{
if (INTCON3bits.INT1IF==1)
{
sp++;
}
INTCON3bits.INT1IF=0;
if (INTCON3bits.INT2IF==1)
{
sp--;
}
INTCON3bits.INT2IF=0;
}
void Lcd_configure(void);
void Lcd_Write_Command(char command);
void Lcd_Write_Data(char data);
void Lcd_Write_String(char*str);
void Lcd_configure(void)
{
Lcd_Write_Command(0x01);
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);
Lcd_Write_Command(0x0c);
}
void Lcd_Write_Command(char command)
{

LCD_RS=0;
LCD_RW=0;
13


LCD_EN=1;
LCD_DATA= command;
LCD_EN=0;
Delay1KTCYx(5);
}
void Lcd_Write_Data(char data)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
LCD_DATA= data;
LCD_EN=0;
Delay1KTCYx(5);
}
void main()
{
TRISB=0XFF;
TRISD=0X00;
TRISC=0X00;
ADCON1=0X0F;
INTCON3bits.INT2IE=1;
INTCON3bits.INT2IF=0;
INTCON3bits.INT2IP=1;
INTCON3bits.INT1IE=1;
INTCON3bits.INT1IF=0;

INTCON3bits.INT1IP=1;
RCONbits.IPEN=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
INTCON2bits.INTEDG2=1;
INTCON2bits.INTEDG1=1;
sp=1234;
Lcd_configure();
while(1)
{
14


Lcd_Write_Command(0x80);
Lcd_Write_Data((sp/1000)+0x30);
Lcd_Write_Data(((sp%1000)/100)+0x30);
Lcd_Write_Data((((sp%1000)%100)/10)+0x30);
Lcd_Write_Data((((sp%1000)%100)%10)+0x30);
}
}
2. Thiết kế ứng dụng với Timer
Bài 01. Lập trình tạo xung 1KHz với thạch anh 4MHz, sử dụng Timer0
để tạo xung.
#include
#include <delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF

#define xung PORTAbits.RA0
void main (void)
{
TRISA=0X00;
ADCON1=0X0F;
T0CONbits.TMR0ON=1;
T0CONbits.T08BIT=1;
T0CONbits.T0PS2=0;
T0CONbits.T0PS1=0;
T0CONbits.T0PS0=0;
T0CONbits.T0CS=0;
T0CONbits.PSA=0;
xung=1;
while(1)
{
TMR0L=(256-250);
while (INTCONbits.TMR0IF==0);
15


xung=~xung;
INTCONbits.TMR0IF=0;
}
}
Bài 02. Lập trình tạo xung 2KHz với thạch anh 12MHz, sử dụng
Timer1 để tạo
xung tạo xung.
#include
#include <delays.h>
#pragma config OSC=HS

#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define xung PORTAbits.RA0
void main (void)
{
TRISA=0X00;
ADCON1=0X0F;
T1CONbits.RD16=0;
T1CONbits.TMR1ON=1;
T1CONbits. TMR1CS=0;
T1CONbits.T1CKPS1=1;
T1CONbits.T1CKPS0=1;
xung=0;
while(1)
{
TMR1L= ((65536-93)%256);
TMR1H= ((65536-93)/256);
while (PIR1bits.TMR1IF==0);
PIR1bits.TMR1IF=0;
xung=~xung;
}
}
16


Bài 03. Lập trình đếm sản phẩm sử dụng Timer0, sản phẩm được hiển
thị với 4
chữ số lên LCD.

#include
#include <delays.h>
#include<adc.h>
//cau h́nh
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
// dung nut nhan tren chan RA6
unsigned int sp;unsigned int bt;unsigned int bc;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
{
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);
Lcd_Write_Command(0x0c);
}
void Lcd_Write_Command (char command )
{
RS=0;
17



RW=0;
EN=1;
DATA = command;
EN= 0;
Delay1KTCYx(5);
}
void Lcd_Write_Data (char data)
{
RS=1;
RW=0;
EN=1;
DATA=data;
EN=0;
Delay1KTCYx(5);
}
void main (void)
{
TRISA=0XFF;
TRISC=0X00;
TRISD=0X00;
ADCON1=0X0F;
T0CONbits.TMR0ON=1;
T0CONbits.T08BIT=0;//16 bit dem toi da 65535 .
T0CONbits.T0CS=1;
T0CONbits.PSA=1;
T0CONbits.T0SE=0;
TMR0H=0;TMR0L=0;
Lcd_configure();
while(1)

{
bt=TMR0L;//BIT CAO
bc=TMR0H;//BIT THAP
sp=bc*256+bt;
Lcd_Write_Command (0xc5 );
Lcd_Write_Data ((sp/1000)+0X30) ;
18


Lcd_Write_Data ((sp%1000)/100+0x30);
Lcd_Write_Data (((sp%1000%100)/10)+0x30);
Lcd_Write_Data (((sp%1000)%100)%10+0x30);
}
}
Bài 04. Lập trình đo tần số sử dụng Timer1 và hiển thị trên LCD. Dải
tần số đo
được từ 0 đến 9999Hz.
#include
#include <delays.h>
#include<adc.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
// dung nut nhan tren chan RC0

unsigned int sp;unsigned int bt;unsigned int bc;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
{
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);
Lcd_Write_Command(0x0c);
// Lcd_Write_Command(0x1c);
}
void Lcd_Write_Command (char command )
19


{
RS=0;
RW=0;
EN=1;
DATA = command;
EN= 0;
Delay1KTCYx(5);
}
void Lcd_Write_Data (char data)
{
RS=1;
RW=0;
EN=1;
DATA=data;

EN=0;
Delay1KTCYx(5);
}
void main (void)
{
TRISA=0XFF;
TRISC=0X00;
TRISD=0X00;
ADCON1=0X0F;
T1CONbits.TMR1ON=1;
T1CONbits.RD16=0;
T1CONbits.TMR1CS=1;
T1CONbits.T1CKPS1=0;
T1CONbits.T1CKPS0=0;
TMR1H=0;TMR1L=0;
Lcd_configure();
while(1)
{
bt=TMR1L;//BIT CAO
bc=TMR1H;//BIT THAP
sp=bc*256+bt;
20


Lcd_Write_Command (0xc5 );
Lcd_Write_Data ((sp/1000)+0X30) ;
Lcd_Write_Data ((sp%1000)/100+0x30);
Lcd_Write_Data (((sp%1000%100)/10)+0x30);
Lcd_Write_Data (((sp%1000)%100)%10+0x30);
}

}

3. Thiết kế ứng dụng với ADC
Bài 1. Thiết Bài kê bộ đo điện áp trên kênh AN0 và hiển thị trên LCD.
#include
#include <delays.h>
#include<adc.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTEbits.RE0
#define RW PORTEbits.RE1
#define EN PORTEbits.RE2
unsigned int ADC;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
{
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);
Lcd_Write_Command(0x0c);
}
void Lcd_Write_Command (char command )
21



{
RS=0;
RW=0;
EN=1;
DATA = command;
EN= 0;
Delay1KTCYx(5);
}
void Lcd_Write_Data (char data)
{
RS=1;
RW=0;
EN=1;
DATA=data;
EN=0;
Delay1KTCYx(5);
}
void main ()
{
float dienap;
int dienap2;
TRISA=0X01;
TRISE=0b00000000;
TRISD=0b00000000;
ADCON1=0X0F;
Lcd_configure();
ADC=1234;
OpenADC( ADC_FOSC_16 &
ADC_RIGHT_JUST &

ADC_4_TAD,
ADC_CH0 &
ADC_INT_OFF&
ADC_VREFPLUS_VDD&
ADC_VREFMINUS_VSS,
14 );
22


while(1)
{
while(BusyADC());
ConvertADC();
while(BusyADC());
ADC = ReadADC();
dienap =((float)ADC*5)/1023;
dienap2=(int)(dienap*100);
Lcd_Write_Command (0x80 );
Lcd_Write_Data ((dienap2/100)+0X30) ;
Lcd_Write_Data ('.');
Lcd_Write_Data ((dienap2%100)/10+0x30);
Lcd_Write_Data ((dienap2%100)%10+0x30);
}
}
Bài 02. Thiết kế bộ đo nhiệt độ sử dụng cảm biến LM35 và kênh AN1 hiển thị
trên
LCD.
#include
#include <delays.h>
#include<adc.h>

#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
unsigned int ADC;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
23


void Lcd_configure (void)
{
Lcd_Write_Command(0x03);
Lcd_Write_Command(0x38);
Lcd_Write_Command(0x06);
Lcd_Write_Command(0x0c);
}
void Lcd_Write_Command (char command )
{
RS=0;
RW=0;
EN=1;
DATA = command;
EN= 0;

Delay1KTCYx(5);
}
void Lcd_Write_Data (char data)
{
RS=1;
RW=0;
EN=1;
DATA=data;
EN=0;
Delay1KTCYx(5);
}
void main ()
{
float dienap;
int nhietdo;
TRISA=0X01;
TRISC=0b00000000;
TRISD=0b00000000;
ADCON1=0X0F;
Lcd_configure();
ADC=1234;
24


OpenADC( ADC_FOSC_16 &
ADC_RIGHT_JUST &
ADC_4_TAD,
ADC_CH1 &
ADC_INT_OFF&
ADC_VREFPLUS_VDD&

ADC_VREFMINUS_VSS,
13 );
while(1)
{
while(BusyADC());
ConvertADC();
while(BusyADC());
ADC = ReadADC();
dienap =((float)ADC*5)/1023;
nhietdo=(int)(dienap*100);
Lcd_Write_Command (0x80 );
Lcd_Write_Data ((nhietdo/100)+0X30) ;
Lcd_Write_Data ((nhietdo%100)/10+0x30);
Lcd_Write_Data ((nhietdo%100)%10+0x30);
Lcd_Write_Data (0xDf);
Lcd_Write_Data ('C');
Delay10KTCYx(5);
}
}

Bài 03. Thiết kê bộ đo điện áp trên kênh AN5 và hiển thị trên LCD.
#include
#include <delays.h>
#include<adc.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
25



×