//--- #include "Display_utils.h" // khai bao thu vien 7 thanh unsigned short shifter,digits_array_index; // khai bao kieu du lieu cac bien unsigned int digit, number; // khai bao kieu du lieu cac bien unsigned short digits_array[4]; // khai bao kich thuoc cho mang so unsigned int cnt=0; // khai bao gia tri dau cho bien cnt bit tmp; // khai bao kieu du lieu cho bien tmp
int n = 0; // gia tri bat dau cua bien n cho
vong lap delay
void external_ISR()org 0x0003 ilevel 0{ // thiet lap ngat ngoai ISR uu tien muc 0
EA_bit =0; // Vo hieu hoa ngat
tmp = 1; // tang gia tri bien tmp
EA_bit =1; // cho phep dung ngat }
//============CHUONG TRINH CHINH ==================// void main(){
unsigned int j=0;
tmp=0; // gia tri ban dau cua bien tmp
P0= 0xFF; // thiet lap port P0 là chan output
P3 =0xFF; // thiet lap port P0 là chan input
//=======================================
digit = 0; // khoi tao cac bien
digits_array_index = 0; shifter = 1;
//======================================= while(1){
//======================================= // thuc hien chuc nang ngat
if(tmp){ // neu phim dc bam thi tang cnt
cnt= cnt + 1;
tmp = 0; // neu tmp=0 ket thuc ngat hien thi len led 7 }
//====== vong lap chinh ===================
for(n=0;n<500;n++) // thuc hien quet led 7 thanh {
digit = (cnt/500u)%50u; // xuat ra so hang nghin digits_array[3] = mask(digit); // luu den mang so
digit = (cnt/50u)%10u; // xuat ra so hang tram digits_array[2] = mask(digit); // luu den mang so
digit = (cnt/10u)%10u; // xuat ra so hang chuc digits_array[1] = mask(digit); // luu den mang so
digit = cnt % 10u; // xuat ra so hang don vi digits_array[0] = mask(digit); // luu den mang so
P0 = digits_array[digits_array_index]; // dua gia tri phu hop den Port0 P1 = shifter; // bat hien thi led 7 thanh shifter <<= 1; // di chuyen den so tiep theo
if(shifter > 8u) // neu shifter > 500 thh́ quay ve gia tri dau
shifter = 1;
delay_ms(500); // delay 0.5s
digits_array_index++; // tang gia tri bien
if(digits_array_index >3u) // neu tang > 3 thi quay tro ve mang 0
digits_array_index = 0; }
} }
Begin Cnt = 0; Cnt = 0; P3.B1 = 0x00; Cnt = cnt +1; Hiển thị 7 thanh End
Sơ đồ thuật toán chương trình đếm số bấm nút sử dụng ngắt và hiện thị trên led 7 thanh