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 cấu trúc while, do while, for, switch (Trang 29 - 33)

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

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

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

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

if(digits_array_index >3u) // neu tang > 3 thi quay tro ve mang 0 digits_array_index = 0; } } }

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

START Dem=0; ctac==0? dem++; dem<=5000? dem=0;

Một phần của tài liệu cấu trúc while, do while, for, switch (Trang 29 - 33)

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

(33 trang)
w