;************************************************************************** ; 标题: 移位方式流水灯(汇编) ; 作者: wentao http://blog.liuwentao.net ; http://wentao.programfan.com ; 日期: 2007.2.21 ; 软件: Keil A51 V8.00 ; 芯片: AT89X51 ; 说明: 实验板实测通过 ; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! ;************************************************************************** org 0000h ajmp start start: mov a,#0xfe ;初值11111110送入a lop: mov p1,a ;a送入P1口(初始点亮P1.0) lcall delay100ms ;延时100ms rl a ;循环左移 ajmp lop delay100ms: mov r5,#195 ;1+(1+2*255)*195+2*195=100.036ms@12M temp: mov r6,#255 ;1+2*255 djnz r6,$ djnz r5,temp ret end /************************************************************************** * 标题: 移位方式流水灯(C51) * 作者: wentao http://blog.liuwentao.net http://wentao.programfan.com * 日期: 2007.2.21 * 软件: Keil C51 V8.02 * 芯片: AT89X51 * 说明: 实验板实测通过 * 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! **************************************************************************/ #include <reg51.h> #include <intrins.h> #define uchar unsigned char void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255 void main() { uchar led; // 为P1口赋值的变量 led = 0xfe; // 初值为11111110 P1 = led; // 变量led值送入P1口 while(1) { delay_ms(100); // 延时100ms led = _crol_(led, 1); // led值循环左移1位 P1 = led; // 左移的led值送入P1 } } void delay_ms(uchar ms) { uchar i; while(ms--) for(i = 0; i < 124; i++); } /************************************************************************** * 标题: 移位方式流水灯(C51) * 作者: wentao http://blog.liuwentao.net http://wentao.programfan.com * 日期: 2007.2.21 * 软件: Keil C51 V8.02 * 芯片: AT89X51 * 说明: _crol_() 可用<<实现,此处低电平,要取反后送入P1。实验板实测通过。 * 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! **************************************************************************/ #include <reg51.h> #include <intrins.h> #define uchar unsigned char void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255 void main() { uchar led; // 为P1口赋值的变量 uchar i; // 循环控制变量 while(1) { led = 0x01; // 初值为00000001 for(i = 0; i < 8; i++) { P1 = ~led; // 变量led值送入P1口 delay_ms(100); // 延时100ms led = led << 1; // led值左移1位 } } } void delay_ms(uchar ms) { uchar i; while(ms--) for(i = 0; i < 124; i++); }

评论