![]() |
![]() |
#6 |
Đệ tử 9 túi
|
OK, mình xin thay đoạn chương trình đó bằng cách gọi hàm:
Code:
Convert(a,4,number); Code:
// ========== Ham chuyen doi void Convert(unsigned char *a,unsigned char index, unsigned int number){ unsigned char i; for(i=0;i< index; i++){ *(a+i) = number%10; number = number/10; }; } Đoạn code đã được test bằng phần cứng.Đảm bảo thay thế đúng. Mình xin đưa lại code mới: Code:
/*;======================================================== ; Ten chuong trinh : Quet 4led 7 thanh ; Nguoi thuc hien : Ngo Hai Bac (NOHB) ; Ngay thuc hien : 12/04/06 ; Phien ban : 2.0 ; Mo ta phan cung : Dung PIC16F877A - thach anh 20MHz ; 4 led 7 anot chung, cac catot noi voi PORTD, 4 chan anot noi voi cuc E trans A1015 ; cuc B cua trans noi voi chan 7->5 cua PORTA ;---------------------------------------------------------------- ; Ngay hoan thanh : ; Ngay kiem tra : ; Nguoi kiem tra : ;---------------------------------------------------------------- ; Chu thich : ;========================================================*/ #include<pic.h> __CONFIG(HS & PWRTEN & BOREN & LVPDIS & WDTDIS ); const unsigned char Font[]={ 0b00000011, 0b10011111, 0b00100101, 0b00001101, 0b10011001,\ 0b01001001, 0b01000001, 0b00011111, 0b00000001, 0b00001001}; // ========== Ham chuyen doi void Convert(unsigned char *a,unsigned char index, unsigned int number){ unsigned char i; for(i=0;i< index; i++){ *(a+i) = number%10; number = number/10; }; } //===== hàm khởi tạo void interrupt MyInt(void){ static int counter1,counter2; // counter1 dem so lan Timer0 tran // counter2 dem so lan ca 4 led7 thanh duoc quet static volatile unsigned int number; static volatile unsigned char a[4]={0,0,0,0}; static volatile unsigned char j; // bien dem kiem tra xem led nao duoc quet if(T0IF & T0IE){ TMR0 = 6; T0IF = 0 ;// xoa co ngat ++counter1; if( counter1 == 3){ counter1 = 0; PORTD = 0xFF; PORTA = 0xFF - (1<<(5- j)) ; PORTD = Font[a[j]]; if(++j==4) { j=0; ++counter2; }; }; if(counter2 == 200){ if(++number>9999) number= 0; counter2 = 0; Convert(a,4,number); }; }; } //------------------------------------init void init(void) { //-------------------------init for PORTs OPTION = 0b00000000; ADCON1 = 0b00000111; TRISA = 0b00000000; TRISB = 0b11111111; TRISC = 0b11111111; TRISD = 0b00000000; PORTD = Font[0]; TRISE = 0b11111111; //-------------------------init for interrupt GIE = 1; T0IE = 1; TMR0 = 6; } //------------------------------------MAIN void main(){ init(); while(1); } // ============== Hết code Chúc các bạn thành công. thay đổi nội dung bởi: ngohaibac, 27-04-2006 lúc 08:32 AM. |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề 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 |