| 查表方式双IO口流水灯(C51) #include <reg51.h>
 
 #define uchar unsigned char
 #define uint unsigned int
 
 void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255
 
 uint state[16] = {0xfffe, 0xfffd, 0xfffb, 0xfff7, //状态表
 0xffef, 0xffdf, 0xffbf, 0xff7f,
 0x7fff, 0xbfff, 0xdfff, 0xefff,
 0xf7ff, 0xfbff, 0xfdff, 0xfeff};
 
 void main()
 {
 uchar i;   // 循环控制变量,兼有变址作用
 
 while(1)
 {
 for(i = 0; i < 16; i++)
 {
 P2 = state[i] / 256;   // 查表将高字节送入P2口
 P0 = state[i] % 256;   // 查表将低字节送入P0口
 delay_ms(100);         // 延时100ms
 }
 }
 }
 void delay_ms(uchar ms)
 {
 uchar i;
 while(ms--)
 for(i = 0; i < 124; i++);
 }
 |