注册 登录
编程论坛 单片机编程

AT89C51汇编霓虹灯,求帮助

剑兰石竹香 发布于 2011-12-14 22:15, 1043 次点击
8051系统中,已知晶震频率为12MHz,编程分别实现使8只发光二极管分别以水滴型和拉幕等形式点亮,每种状态各持续10秒,循环不止;在此过程中按下K1键,奇数号发光二极管1Hz的频率闪烁报警;任何时候按下K2键,偶数号发光二极管以10Hz的频率闪烁报警     有谁汇编这个程的,求帮助。。。。。。。。。。。。。。。
或者我传程序上来帮我解释一下好吗/ 谢谢啦
3 回复
#2
剑兰石竹香2011-12-14 22:16
ORG 0000H
                 LJMP BEGIN

         ORG 0003H   
         LJMP WINT0

         ORG 000BH     
         LJMP COUNTERO
         ORG 0013H
         LJMP WINT1

         ORG 001BH  
         LJMP TIMER1

                 ORG 0030H
    BEGIN:   CLR IT0
          CLR IT1
         
         MOV TMOD,#16H
         MOV TL1,#0B0H
         MOV TH1,#3CH
         MOV TL0,#9CH
         MOV TH0,#9CH
         SETB TR1
         SETB TR0
         SETB EA
         SETB ET0
         SETB ET1
         SETB EX0
         SETB EX1
         SETB PX0
        FLAG BIT 00H
         CLR FLAG

                 ;水滴形点亮方案
            
    WATER:   JBC FLAG,FLASH   
             MOV 00H,#08H
         MOV R2,#00000000B
    START:   MOV R1,00H        
         MOV A,#10000000B         
    LOOP:    MOV R3,A
             ORL A,R2
                 CPL A
             MOV P1,A
         LCALL DELAY
         MOV A,R3
         RR A         
         DJNZ R1,LOOP
                 SETB PSW.7
           MOV A,R2
         RLC A
         MOV R2,A
         DJNZ 00H,START
                 MOV P1,#0FFH
                 LCALL DELAY
         SJMP WATER                 

               ;拉幕型点亮方案
 
     FLASH: JBC FLAG,FLASH  
            MOV R1,#00H
                MOV DPTR,#TABLE
         LOOP1: MOV A,R1
                MOVC A,@A+DPTR
                CPL A
                MOV P1,A
                LCALL DELAY
                INC R1      
                CJNE R1,#08H,LOOP1
                SJMP FLASH                     
            
      DELAY:    MOV R4,#64H
        LP1:    MOV R5,#64H
        LP2:    NOP
                NOP
                NOP
                NOP
                DJNZ R5,LP2
                DJNZ R4,LP1
                RET

   LONG_DELAY: MOV R4,#0F0H
       LP3:    MOV R5,#0A8H
       LP4:    NOP
               NOP
               NOP
               NOP
               DJNZ R5,LP4
               DJNZ R4,LP3
               RET

SHORT_DELAY: MOV R4,#30H
    LP5:    MOV R5,#80H
    LP6:    NOP
            NOP
            NOP
            NOP
            DJNZ R5,LP6
            DJNZ R4,LP5
            RET

COUNTERO:  SETB FLAG
           RETI

  TIMER1:  SETB P3.4
           CLR P3.4
       MOV TL1,#0B0H
           MOV TH1,#3CH
       RETI

   WINT1:  MOV A,#10101010B  
           MOV P1,A
           LCALL DELAY500ms
           MOV P1,#0FFH
           LCALL DELAY500ms
           SJMP WINT1

  WINT0:   MOV A,#01010101B  
           MOV P1,A
           LCALL DELAY50ms
           MOV P1,#0FFH
           LCALL DELAY50ms
           SJMP WINT0

  DELAY500ms: MOV 3FH,#05H  
         LP7: JNB TF1,$
              CLR TF1
              DJNZ 3FH,LP7
              RET

 DELAY50ms: MOV TH1,#9EH
        MOV TL1,#58H
            JNB TF1,$   
            CLR TF1      
            RET
           

TABLE:DB 81H,0C3H,0E7H,0FFH,0E7H,0C3H,81H,00H ;拉幕型点亮的显示码
           END
#3
剑兰石竹香2011-12-14 22:27
来个回答的撒
#4
huaziforever2012-06-24 22:30
这个在学校学过,建议画出流程图,基本上就搞定了。
1