![]() |
|
|
#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 | |
|
|
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 |