流水灯与闪烁同时实现

十万火急~!!!请教高手~单片机原理与应用(写程序)
悬赏分:100 - 提问时间2009-12-6 13:33
需同时实现两个功能:
    1. P1口控制的流水灯从右往左依次点亮,无限循环。
    2. P0口控制的流水灯先单数亮,一秒后再双数灯亮。
问题补充:就那啥 MOV啊!LOOP什么的!
-----------------------------------
提问者: bluepopeye 已关闭 - 二级
------------------------
答复 共 3 条    答复中有满足楼主要求的,但是楼主没有选择最佳,违约关闭了题目。
------------------------

这个程序,经过PROTUSE检验,你试试看。
;----------------------------------
    ORG  0000H
    SJMP START
    ORG  000BH
    SJMP INT_T0
START:
    MOV  TMOD, #0x01
    MOV  TH0, #0x3C         ;(65536-50000)/256;
    MOV  TL0, #0xB0         ;(65536-50000)%256;
    SETB TR0
    SETB ET0
    SETB EA
    MOV  P1, #0x55
    MOV  R2, #0x7F
    MOV  R3, #20
LOOP:
    MOV  A,   R2
    RL   A
    MOV  R2, A
    MOV  P0, A              ;P0流水灯
    LCALL DL500MS
    SJMP LOOP
;-------------------------
INT_T0:
    MOV  TH0, #0x3C         ;(65536-50000)/256;
    MOV  TL0, #0xB0         ;(65536-50000)%256;
    DJNZ R3, E_T0
    MOV  R3, #20
    XRL  P1, #0xFF          ;P1交替闪烁
E_T0:
    RETI
;-------------------------
DL500MS:
    MOV  R5, #50
D0: MOV  R6, #20
D1: MOV  R7, #250
D2: DJNZ R7, D2
    DJNZ R6, D1
    DJNZ R5, D0
    RET
END
;-------------------------
回答者: 做而论道 - 十一级   2009-12-6 16:02
-----------------------------------
/****************************************************
功能:1.P1口控制的流水灯从右往左依次点亮,无限循环。
      2.P0口控制的流水灯先单数亮,一秒后再双数灯亮。
****************************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

void delay(uint z)
{
    uint x, y;
    for(x = 110; x > 0; x--) for(y = z; y > 0; y--);
}

void init()                        //利用中断精确1秒闪
{
    TMOD = 0x01;
    TH0 = (65536 - 50000) / 256;
    TL0 = (65536 - 50000) % 256;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
}

void time0() interrupt 1
{
    uchar aa;    
    TH0 = (65536 - 50000) / 256;
    TL0 = (65536 - 50000) % 256;
    aa++;
    if(aa == 20) {
      aa = 0;
      P0 = ~P0;
    }
}

void main()
{
    uchar x;
    init();
    x = 0xFE;
    P0 = 0xAA;
    while(1) {
      x = _crol_(x, 1);
      P1 = x; delay(200);
    }
}

回答者:----------- 四级   2009-12-6 13:48
-----------------------------------
原题网址:http://zhidao.baidu.com/question/128267959.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值