Khi n= 100 thi xuat ra hang ket thuc viec xuat ra mot hang dua vao bien ChiSo.

Một phần của tài liệu Tài liệu thực hành LMD_ Matrix LED (Trang 66 - 70)

viec xuat ra mot hang dua vao bien ChiSo.

bien ChiSo ban dau dc main gan la 0, la chi so cua byte dau hang + kietm tra neu la hang dau tien (n==0) thi DongBo=0, nguoc lai =1

if (n==SoLanNgat) //neu ngat SoLanNgat lan thi {

n=0; //dem lai tu 0 voi lan sau

if (ChiSo==0) {DongBo = 1;}//DongBo=1 o hang dau tien

else {DongBo = 0;}// =0 cac hang sau

for (k=1; k<=BeRong; k++) //va xuat ra mot hang {

DuLieu = X[ChiSo];

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich clkIN = 0;

ChiSo++; //tang chi so len 1,

} //ket thuc for chi so se tang len 4

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo

if (ChiSo > (SoByteMang-1)) {ChiSo=0;} }

else //neu n < 100 thi {

n++;//tiep tuc dem so lan ngat }

}

#pragma AREGS

/*---*/void NgatDinhThoi0 (void) interrupt 1 using 1 void NgatDinhThoi0 (void) interrupt 1 using 1

{

XuLiNgatDinhThoi0 (); //dich 1 cot tu trai qua phai }

/*---*//*sau day la chuong trinh chinh /*sau day la chuong trinh chinh

1. NHIEM VU:

+ khoi tao cac gia tri bien:

khoi tao bien dieu khien chi so mang ChiSo de phuc vu xuat mang khoi tao bien dem n de tinh toc do ngat

+ thiet lap cac che do ngat va dinh thoi cho phep ngat toan cuc cho phep ngat dinh thoi 2. GIAI THUAT

3. Danh sach cac bien, du lieu tac dongBit cho phep ngat toan cuc: Ngat Bit cho phep ngat toan cuc: Ngat

Bit cho phep ngat dinh thoi 0: Ngatdinhthoi0 Bien trung gian xac dinh tri so mang: chiso Bien dem so lan say ra ngat: n

Gia tri thanh ghi dinh thoi */

void main (void){ //khoi tao

ChiSo = 0; //khoi tao chi so cua mang n = 0; //khoi tao bien dem so lan ngat //thiet lamp che do cho dinh thoi

CheDoDinhThoi = (CheDoDinhThoi & 0xf0) | 0x02; // thiet lap che do tu dong lap lai 8 bit cho T0 ByteCaoDinhThoi0 = 256 - SoDemDinhThoi;

// nap lai cho TL0 de dem SoDemDinhThoi xung nhip he thong ByteThapDinhThoi0 = ByteCaoDinhThoi0;

NgatDinhthoi0 = 1;//cho phep ngat dinh thoi 0 BatDinhThoi0 = 1; // khoi dong dinh thoi 0 //doi

while (1); }

Bài 6:

/*chuong trinh thu nghiem lmd6 --- "CHAY TOT !!!" dieu khien mach quet led co so do phan cung nhu ... dieu khien quet led bang ngat dinh thoi

tao hieu ung dich chuyen ngang

moi khi say ra ngat dinh thoi 0 chuong trinh se xuat ra mot hang dua vao bien ChiSo va chot giu. cu the viec do la

- xuat ra lien tuc cac byte cua hang do xe ke xung clkIN- sau khi xuat het cac byte thi xuat ra mot xung clkOUT - sau khi xuat het cac byte thi xuat ra mot xung clkOUT ChiSo la bien toan cuc dc khoi tao do chuong trinh chinh

neu ChiSo bang 0, tuc la hang dau tien dc xuat, khi ay xuat ra DongBo = 1 neu ChiSo khac 0 thi xuat ra mot ra DongBo = 0

sau khi xuat het so byte kiem tra neu ChiSo = 63 thi dua tro ve 0 cong P1 xuat ra song song DuLieu

mang char dc khai bao o ngoai */

#include <reg51.h>

//cac chan tin hieu dieu khien

sbit clkIN = 0xB3;//tao xung dich vao bo dem ghi dich sfr DuLieu = 0x90;

sbit clkOUT = 0xB4;//tao xung xuat ra dong thoi cua cac bo dem

sbit DongBo = 0xB5;//tao xung dong bo hang dau tien, chan nay noi toi dau vao bo ghi dich quet hang //cac thanh ghi va bit chuc nang dac biet

sfr CheDoDinhThoi = 0x89; sfr ByteThapDinhThoi0 = 0x8A; sfr ByteCaoDinhThoi0 = 0x8C; sbit BatDinhThoi0 = 0x8C;

#define SoByteMang 64 //BeRong * ChieuCao = so byte cua mang hien thi X #define NgatDu 5 //so lan say ra ngat dinh thoi

#define SoDemDinhThoi 256 //so xung nhip dinh thoi can dem // bang du lieu khoi tao

char code KhoiTao[SoByteMang] ={0x00,0x00,0x00,0x00,

0x00,0x01,0x00,0x00, 0x80,0x01,0x00,0x00, 0xc0,0x01,0x00,0x00, 0xe0,0x01,0x00,0x00, 0xb0,0xff,0xff,0x3f, 0x98,0xff,0xff,0x3f, 0x0c,0x00,0x00,0x30, 0x0c,0x00,0x00,0x30, 0x98,0xff,0xff,0x3f, 0xb0,0xff,0xff,0x3f, 0xe0,0x01,0x00,0x00, 0xc0,0x01,0x00,0x00, 0x80,0x01,0x00,0x00, 0x00,0x01,0x00,0x00, 0x00,0x00,0x00,0x00 }; char idata X[SoByteMang];

char bdata ThanhGhiTrungGian; //day la thanh ghi trung gian truy cap bit sbit BitThapNhat= ThanhGhiTrungGian ^ 0;

sbit BitCaoNhat = ThanhGhiTrungGian ^ 7; bit BitRa;//bit chua bit di ra tu bit dau hang bit BitVao;//bit chua bit di Vao cuoi hang

/*---*/

int ChiSo,DemSoLanNgatT0;//chi so mang va bien n de dem so lan say ra ngat int SoDongDaXuat;

/*---*/

#pragma NOAREGS // ko su dung cac ky hieu thanh ghi tuyet doi cho cac // ham duoc goi tu dich vu ngat

/*---*/

static void XuLiNgatDinhThoi0 (void) //xuat ra mot hang thu x /*day la chuong chinh con phuc vu ngat dinh thoi 0

nhiem vu cua chuong trinh con nay la: - dem so lan say ra ngat dinh thoi qua bien n - khi n < SoLanNgat thi tang len 1 ket thuc - khi n = SoLanNgat thi xuat ra hang ket thuc viec xuat ra mot hang dua vao bien ChiSo.

bien ChiSo ban dau dc main gan la 0, la chi so cua byte dau hang + kietm tra neu la hang dau tien (n==0) thi DongBo=0, nguoc lai =1 + su dung vong lap voi so vong la so byte cua hang

moi chu trinh lap se xuat ra mot byte, va clkIN, tang ChiSo

+ ket thuc vong lap thi xuat ra mot xung chot clkOUT, va chi so da tro den hang tiep theo + kiem tra neu xuat het mang (chiso=SoByteMang) thi gan lai chiso=0

int k; //bien dem so byte trong mot hang

if (++DemSoLanNgatT0==NgatDu) //neu ngat SoLanNgat lan thi {

DemSoLanNgatT0=0; //dem lai tu 0 voi

lan sau

SoDongDaXuat++;

if (ChiSo==0) {DongBo = 1;}//DongBo=1 o hang dau tien

else {DongBo = 0;}// =0 cac hang sau

for (k=1; k<=BeRong; k++) //va xuat ra mot hang {

DuLieu = X[ChiSo];

clkIN = 1; //tao mot xung vuong kich vao bo dem ghi dich clkIN = 0;

ChiSo++; //tang chi so len 1,

} //ket thuc for chi so se tang len 4

clkOUT = 1; //tao mot xung vuong de bo dem xuat ra dong thoi mot hang clkOUT = 0; //dich xung dong bo hang xuong hang tiep theo

if (ChiSo > (SoByteMang-1)) {ChiSo=0;} }

}

#pragma AREGS

/*---*/void NgatDinhThoi0 (void) interrupt 1 using 1 void NgatDinhThoi0 (void) interrupt 1 using 1

{

XuLiNgatDinhThoi0 (); //dich 1 cot tu trai qua phai }

/*---*/

void Quay1DiemCho1Hang (int SoHang)//so hang bat dau tu 1 den 16 /*day la thu tuc dich chuyen mot hang

thu tuc nay se lam cho mot hang quay di mot cot theo giai thuat sau: - ve dau hang

Một phần của tài liệu Tài liệu thực hành LMD_ Matrix LED (Trang 66 - 70)