![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Jul 2011
Bài gửi: 25
: |
Code:
#include <16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #device 16F877*=16 ADC=10 #use delay(clock=12000000) #byte portb=0x06 #byte portc=0x08 #byte portd=0x07 #byte intcon=0x000B #bit RBIF=intcon.0 #bit RBIE=intcon.3 #bit RB7=portb.7 Int16 ad1,ad2,ad0; int8 a0,a1,a2,b0,b1,b2,c0,c1,c2 ; int8 a=0 ; const unsigned char digital[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x09} ; #int_rb void ngatRB7() { a=a+1; RBIF=0; } void doc_ADC() { if(a%2) { portc=0x01; set_ADC_channel(0); ad0=read_ADC(); delay_us(10) ; set_ADC_channel(1); ad1=read_ADC(); delay_us(10) ; set_adc_channel(2); ad2=read_ADC() ; delay_us(10) ; } else { portc=0x02; set_ADC_channel(3); ad0=read_ADC(); delay_us(10) ; set_ADC_channel(4); ad1=read_ADC(); delay_us(10) ; set_adc_channel(5); ad2=read_ADC() ; delay_us(10) ; } } void main() { set_tris_b(0b10000000); set_tris_d(0); set_tris_c(0); enable_interrupts(global); enable_interrupts(int_rb); ext_int_edge(H_to_L); setup_ADC(ADC_clock_internal); setup_adc_ports(ALL_ANALOG); while(true) { doc_ADC() ; ////hien chu so hang tram // delay_ms(10) ; portb=0x01 ; c0=ad0/100 ; portd=digital[c0] ; portb=0x02 ; c1=ad1/100 ; portd=digital[c1] ; portb=0x04 ; c2=ad2/100 ; portd=digital[c2]; portb=0x20 ; delay_ms(2) ; portb=0x00 ; ///chu hang chuc portb=0x01; b0=(ad0%100)/10 ; portd=digital[b0] ; portb=0x02; b1=(ad1%100)/10 ; portd=digital[b1] ; portb=0x04 ; b2=(ad2%100)/10 ; portd=digital[b2] ; portb=0x10 ; delay_ms(2) ; portb=0x00 ; ////chu hang don vi portb=0x01 ; a0=(ad0%10)%10 ; portd=digital[a0] ; portb=0x02 ; a1=(ad1%10)%10 ; portd=digital[a1] ; portb=0x04 ; a2=(ad2%10)%10 ; portd=digital[a2]; portb=0x08; delay_ms(2) ; portb=0x00 ; } } Hình như mình viết ngắt ngoài có vấn đề led h ko sáng nữa. |
![]() |
![]() |
|
|