51单片机定时器0中断控制LED闪烁
#include<reg51.h> sbit P07 = P2^7; unsigned char jpzz, jpdm, yfdm, g8w, d8w, dssj; unsigned char code tab1[26] = {0xfa, 0x15, 0xfa, 0x67, 0xfb, 0x04, 0xfb, 0x90, 0xfc, 0x0c, 0xfc, 0x44, 0xfc, 0xac, 0xfd, 0x09, 0xfd, 0x34, 0xfd, 0x82, 0xfd, 0xc8, 0xfe, 0x06, 0xfd, 0xa6};
unsigned char code tab2[51] = {0x04, 0x08, 0x08, 0x08, 0x08, 0x00, 0x07, 0x06, 0x07, 0x06, 0x05, 0x04, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x0a, 0x01, 0x0a, 0x0d, 0x09, 0x08, 0x08, 0x0b, 0x0b, 0x0a, 0x08, 0x00, 0x07, 0x06, 0x07, 0x06, 0x05, 0x04, 0x00, 0x01, 0x01, 0x06, 0x06, 0x06, 0x04, 0x00, 0x08, 0x07, 0x06, 0x05, 0x03, 0x04, 0x00};
unsigned char code tab3[51] = {0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x08, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x08, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00};
void delay() { unsigned char i, j, k, n; for (i = dssj; i > 0; i--) for (j = 2; j > 0; j--) for (k = 125; k > 0; k--) for (n = 248; n > 0; n--); }
void ypyz() { jpzz = 0; do { jpdm = tab3[jpzz]; dssj = jpdm; yfdm = tab2[jpzz]; if (yfdm != 0) { yfdm--; g8w = tab1[yfdm2]; d8w = tab1[yfdm2+1]; TH0 = g8w; TL0 = d8w; TR0 = 1; delay(); jpzz++; } else { TR0 = 0; delay(); jpzz++; } } while (jpdm != 0); }
void main() { TMOD = 0x01; IE = 0x82; while (1) { ypyz(); } }
void ptf0() interrupt 1 { TL0 = d8w; TH0 = g8w; P07 = ~P07; }
原文地址: https://www.cveoy.top/t/topic/mRHA 著作权归作者所有。请勿转载和采集!