返回该小组首页 回复主题
stargon_zhang

stargon_zhang

小组等级:     E币:661  (E币换礼)

#1楼主:移位方式流水灯

文章发表于:2007-10-06 10:20

转自文涛的博客

  • ;**************************************************************************   
  • ; 标题: 移位方式流水灯(汇编)   
  • ; 作者: 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++);   
  • }

  • wangyi1e

       小组等级:    E币:235  (E币换礼)

    #2

    文章发表于:2008-06-27 10:40

    学习一下,hoho

    lstzixing

       小组等级:    E币:297  (E币换礼)

    #3

    文章发表于:2008-07-08 16:59

    也可以整个查表的.

    lingx

       小组等级:    E币:78  (E币换礼)

    #4

    文章发表于:2008-08-18 11:38

    不错,效果挺好,也可以随机闪吧!

    总共 , 当前 /

    快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

    您目前还不是小组成员,请先加入

    回复贴子区

    用户名:    您没有注册?

    密码:    忘记了密码?

    内容:

    • DesignDesign
    • HTMLHTML

    浏览该小组的用户还看过...

    设计资源与分销