单片机流水灯闪烁问题!急急急!

小弟是初学者啊,c51单片机的~是利用定时器/计数器产生2秒定时,每当2秒到时候更换指示灯闪烁,指示灯闪烁频率为0.2秒,(要用延时程序)求各位大神解一下~(汇编语言,带解释~!!)

ORG 0000H

         LJMP MAIN

         ORG 000BH

         T0MS    EQU  NOT 50000    ; 50 mS 晶振 12.000 MHz

         PJSBZ   EQU  20H

         PJSBZY  EQU  21H

PST0:    MOV     TL0, #LOW T0MS    ; T0 中断

         MOV     TH0, #HIGH T0MS

         SETB    PJSBZ             ; 50 mS 标志

         DJNZ    R6, PST02

         MOV     R6, #40           ; 50 mS * 40 = 2 S

         SETB    PJSBZY            ; 2 S  标志

PST02:   RETI

        

MAIN:    MOV     TMOD, #01H

         MOV     IE, #82H          ; 开 T0 中断

         MOV     SP, #30H

         MOV     TL0, #LOW T0MS    ; TO 50MS 中断 计时 0

         MOV     TH0, #HIGH T0MS

         SETB    TR0

         MOV     R6, #40           ; 计时初值

MAIN1:   MOV     A, #7FH

MAIN2:   JNB     PJSBZ, $          ; 50 mS

         CLR     PJSBZ

         RR      A                           ; 顺流

         MOV     P1, A

         JNB     PJSBZY, MAIN2     ; 2 S

         CLR     PJSBZY

MAIN3:   JNB     PJSBZ, $          ; 50 mS

         CLR     PJSBZ

         RL      A                            ; 逆流

         MOV     P1, A

         JNB     PJSBZY, MAIN3      ; 2 S

         CLR     PJSBZY

         AJMP    MAIN1

         END

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-19
又要用定时器,又要用延时程序,这不是...
----
其实,只用一个定时器,就都可以解决。

;假设在 P0 口外接 8 个 LED,输出低电平时发光。
;下面程序,已经通过了实验,符合题目的流水灯闪烁要求.

ORG 0000H
LJMP START
ORG 000BH
MOV TH0, #4CH ;50ms@11.0592MHz
CPL F0
JNB F0, EXIT_T0 ;不到100ms就退出.
XRL P0, A ;每100ms,有一个LED亮/灭一次.
DJNZ R6, EXIT_T0
MOV R6, #20
RL A
EXIT_T0:
RETI

START:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #4CH ;50ms@11.0592MHz
MOV IE, #82H ;开T0中断.
MOV R6, #20
MOV A, #1
SETB TR0
SJMP $

END
第2个回答  2012-05-17
ncccccvnh

如何用单片机控制流水灯闪烁?
可以用for循环试试unsingned char i;for(i=0;i<5;i++)\/\/流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处...

流水灯闪烁是怎么回事
1、这个写程序的时候就给6个I\/O输出高电平或低电平就行了。2、先让6个I\/O口输出高电平或低电平,这个要看你的是什么单片机,51单片机都是默认的是高电平是亮,然后延时一会再让它输出低电平就行了,就这样一直循环。

单片机流水灯右下角闪烁
1.写这个程序的时候,输出高电平或者低电平到6个I\/o就够了。2.让6个I\/O口先输出高电平或低电平。这个要看你有什么单片机了。51单片机默认都是高电平或者灯,然后延迟一段时间让它输出低电平。如此循环往复。

谁帮我看下51单片机流水灯怎么不能正常流水闪亮
你程序最后的运行结果是不是所有LED都亮了,如果是这样的话,就是可能你P0口没有加上拉电阻,单片机P0不加上拉电阻的话,是输出不了高电平的。还有,楼主以后问程序问题的同时,最好也把硬件电路图给出,这样大家也才好回答。。。希望可以帮到你。。。

用51单片机写了一个流水灯程序,有一点问题,请高手解惑
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。要想按键随时有效,应该把两个移位函数_cror_,_crol_ 放在主程中,检测key也放在...

单片机流水灯闪烁问题!急急急!
LJMP MAIN ORG 000BH T0MS EQU NOT 50000 ; 50 mS 晶振 12.000 MHz PJSBZ EQU 20H PJSBZY EQU 21H PST0: MOV TL0, #LOW T0MS ; T0 中断 MOV TH0, #HIGH T0MS SETB PJSBZ ; 50 mS 标志 DJNZ R6, PST02 MOV R6, #40 ; 50 mS * ...

单片机流水灯问题 看看我程序有什么错误啊
我正看六一晚会呢,帮你看看了,只看语法错误,不检查逻辑功能:include <reg52.h> void main(){ P1=0x00;TMOD=0x02;TH0=0x00;TL0=0x00;EA = 1;ET0 = 1;TR0=1;while(1){P1=0x55;} } void time0_int() interrupt 1 { P1 ^= 0x55;} ...

单片机 流水灯怎样全部闪烁 五次之后停止
可以用for循环试试unsingned char i;for(i=0;i<5;i++)\/\/流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据...

大学单片机七彩流水灯(急急急)
一、点亮一个LED灯 程序:MOV A,#00FEH MOV P1,A JMP $ END 图:二、点亮1、3、5、7LED灯 程序:MOV A,#00AAH MOV P1,A JMP $ END 图:三、尝试让一个LED灯闪烁 程序:STRAT:MOV A,#00FEH MOV P1,A LCALL DEL MOV A,#00FFH MOV P1,A LCALL DEL JMP STRAT DEL:MOV R1,#...

单片机用定时器做流水灯 乱跳
问题应该就出现在这句:if((kk<161)&&(kk%20==0)),这里这个用法显然是不对的 最开始kk=0的时候,if((kk<161)&&(kk%20==0))这个条件判断是正确的,进入执行1次if() {...}内的代码,接着再第2此判断if((kk<161)&&(kk%20==0))这个条件依然是成立的,还是进入执行2次if() {....

相似回答