Chương trình đ ms bm nút sd ng ng t và hin th trên led ị thanh

Một phần của tài liệu Viết chương trình led đuổi nhau PORT1 dùng pháp dịch bit (Trang 27 - 31)

thanh

// VĐK AT89S8253

//---

#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

}

//============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

IE= 0x81; // thiet lap cac ngat

//=======================================

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 t quay ve gia hh 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

} } }

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

Một phần của tài liệu Viết chương trình led đuổi nhau PORT1 dùng pháp dịch bit (Trang 27 - 31)

Tải bản đầy đủ (DOCX)

(31 trang)
w