chuangxin
中尉
中尉
  • 金钱9240RMB
  • 威望751点
  • 贡献值0点
  • CAV币0点
阅读:1520回复:4

AT89C2051时钟程序!!

楼主#
更多 发布于:2005-03-01 08:45
<P>;***************AT89C2051时钟程序    ****************** ;
;29H:毫秒,30H:毫秒,31H:秒,32H:分,33H:时
;P3.7为分按钮,P1.7为时按钮,P3.0:夜光灯开关-0输出
;P1口 为字符输出口,采用共阳显示管。
;50H:键盘扫描计数(速度?
;51H:延时单元
;52H:闪烁单元
;00H:秒闪
;01H:补充暗显时的键盘扫描速率
;02H:闪
;03H:闪烁形状,0为开
;04H:秒显示转换
 ORG 0000H
 LJMP START
 ORG 0003H
 RETI
 ORG 000BH
 LJMP INTT0
 ORG 0013H
 RETI
 ORG 001BH
 RETI
 ORG 0023H
 RETI
 ORG 002BH
 RETI
 nop
;*****************  主 程 序  ************************
START:
 MOV P3,#0FFH
 MOV 30H,#00H
 MOV 31H,#00H
 MOV 32H,#00H
 MOV 20H,#00H
 MOV 33H,#12
 MOV 50H,#00H
 MOV 51H,#80
 MOV 52H,#00
 MOV TMOD,#10B
 MOV TL0,#06H
 MOV TH0,#06H
 SETB  EA
 SETB  ET0
 SETB  TR0
;****************** 键盘扫描 **************************
KEY:LCALL LEDDISP
 JB P3.7,KEY31
 LCALL LEDDISP
 JB P3.7,KEYOUT
 INC 50H
 MOV A,50H
 CJNE A,#200,KEYOUT  ;调键盘速度-分
 INC 32H
 MOV 50H,#00H
 SETB 03H
 SETB 02H</P>
<P> KEY31:
 JB P3.1,KEYS
 LCALL LEDDISP
 JB P3.1,KEYOUT
 INC 50H
 MOV A,50H
 CJNE A,#200,KEYOUT  ;调键盘速度-时
 INC 33H
 MOV 50H,#00H
 SETB 03H
 SETB 02H
        KEYS:
        JB P3.5,KEYOUT
        LCALL LEDDISP
        LCALL LEDDISP
        JB P3.5,KEYOUT
 INC 50H
 MOV A,50H
 CJNE A,#200,KEYOUT  ;调键盘速度-时
        CPL 04H
  KEYOUT:
 SJMP KEY
;****************** 中断服务 **************************
INTT0:
 PUSH  ACC
 PUSH  PSW
 INC 29H
 MOV A,29H
 CJNE A,#200,S
 INC 30H  ;MS+1
 MOV 29H,#00H</P>
<P> INC 52H  ;闪烁计数
 MOV A,52H
 CJNE A,#10,T52H
 CPL 00H
 JB 03H,F
 CPL 02H
 F:
 MOV 52H,#00
 T52H:
 S:
 MOV A,30H
 CJNE A,#20,M
 INC 31H  ;S+1
 MOV 30H,#00H
 ACALL YGDCOMP ;夜光灯
 M:
 MOV A,31H
 CJNE A,#60,H
 CPL P1.7
 INC 32H  ;M+1
 MOV 31H,#00H
 H:
 MOV A,32H
 CJNE A,#60,H1
 INC 33H  ;H+1
 MOV 32H,#00H
 H1:
 MOV A,33H
 CJNE A,#24,INTT0OUT
 MOV 33H,#00
INTT0OUT:
 POP PSW
 POP ACC
 RETI</P>
<P>;******************** 夜光灯比校    *******************
YGDCOMP:
 MOV A,33H
 CJNE A,#20,YGDCOMP1   ;亮夜光灯
 CLR P3.0
 YGDCOMP1:
 CJNE A,#22,YGDCOMP2   ;暗显示
 MOV 51H,#20      ;调暗亮度
 SETB 01H
  YGDCOMP2:
 CJNE A,#7,YGDCOMPOUT
 SETB P3.0
 MOV 51H,#80
 CLR 01H
  YGDCOMPOUT:
 RET
;******************** 分配显示单元  *******************
;3Ah:时十位/3Bh:时个位
;3Ch:分十位/3Dh:分个位
DISP:
     mov a,33h ;十六进制转十进制
     mov b,#10
     div ab
     mov 3Ah,a
     mov 3Bh,b</P>
<P>     mov a,32h
     mov b,#10
     div ab
     mov 3Ch,a
     mov 3Dh,b</P>
<P>     mov a,31h
     mov b,#10
     div ab
     mov 3Eh,a
     mov 3Fh,b
     RET</P>
<P>;******************** 动态显示  ***********************
LEDDISP:
      LCALL DISP
      MOV DPTR,#TABLED ;指定查表启始地址
;//H
        JB 04H,MS1
 MOV A,3Ah   ; 取时十数
        SJMP MSOUT1
        MS1:
        MOV A,3CH
        MSOUT1:
 MOVC A,@A+DPTR   ;查十位数的7段代码
 MOV P1,a   ;送出十位的7段代码
 MOV A,3AH
 CJNE A,#0,H_1  ;时的十位为0 时不显示
 SJMP H_2
 H_1:    
 JNB 02H,T01HOUT  ;闪烁
      clr p3.5   ;开十位显示
 H_2:  
      acall D1ms   ;显示162微秒
      setb p3.5  ;关闭十位显示,防止鬼影
 JNB 01H,T01HOUT  ;夜间时执行
 ACALL D1_1MS ;补充延时
 CLR P3.5
 NOP
 NOP
 NOP
 SETB P3.5
 ACALL D1_1MS
 T01HOUT:</P>
<P>        JB 04H,MS2
      mov a,3Bh ;取时个位数
        SJMP MSOUT2
        MS2:
        MOV A,3DH
        MSOUT2:
      MOVC A,@A+DPTR ;查十位数的7段代码
      mov p1,a ;送出十位的7段代码
 JNB 00H,T20OUT2
 CLR P1.7
 SJMP T20OUT
    T20OUT2:
 SETB P1.7
    T20OUT:
     JNB 02H,T01HOUT3  ;闪烁
      clr p3.4 ;开十位显示
      acall D1ms
      setb p3.4;关闭十位显示,防止鬼影
 JNB 01H,T01HOUT3
 ACALL D1_1MS
 CLR P3.4
 NOP
 NOP
 NOP
 SETB P3.4
 ACALL D1_1MS</P>
<P>    T01HOUT3:
;//M
        JB 04H,MS3
        mov a,3Ch ;取分十位数
        SJMP MSOUT3
        MS3:
        MOV A,3EH
        MSOUT3:
      MOVC A,@A+DPTR ;查个位数的7段代码
      mov p1,a ;送出个位的7段代码
 JNB 02H,T01HOUT4  ;闪烁
      clr p3.3 ;开个位显示
      acall D1ms ;显示162微秒
      setb p3.3;关闭个位显示,防止鬼影
   JNB 01H,T01HOUT4
 ACALL D1_1MS
 CLR P3.3
 NOP
 NOP
 NOP
 SETB P3.3
 ACALL D1_1MS</P>
<P>  T01HOUT4:
        JB 04H,MS4
      mov a,3Dh ;取分个位数
        SJMP MSOUT4
        MS4:
        MOV A,3FH
        MSOUT4:
      MOVC A,@A+DPTR ;查十位数的7段代码
      mov p1,a ;送出十位的7段代码
      JNB 02H,T01HOUT5  ;闪烁
      clr p3.2 ;开十位显示
      acall D1ms ;显示162微秒
      setb P3.2;关闭十位显示,防止鬼影
   JNB 01H,T01HOUT5
 ACALL D1_1MS
 ACALL D1_1MS
    T01HOUT5:
     RET
TABLED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH</P>
<P>;********************  延时程序  *********************
D1MS:   MOV R7,51H ;2+2X80=162微秒,延时按12MHZ计算
        DJNZ R7,$
        RET</P>
<P>D1_1MS: MOV R7,#30  ;
        DJNZ R7,$
        RET</P>
<P>DS20MS:
 ACALL LEDDISP
        ACALL LEDDISP
        ACALL LEDDISP
        RET</P>
<P>DL1S:   LCALL      DL05S
        LCALL      DL05S
        RET
DL05S:  MOV        R3,#20H
    DL05S1:  LCALL      LEDDISP
        DJNZ       R3,DL05S1
        RET
END
</P>
广东清远市佛冈创信汽车音响维修 QQ:10101349 邮箱 chuangxinfg@21cn.com
34535
一等列兵
一等列兵
  • 金钱197RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
1楼#
发布于:2006-02-15 18:49
<img src="images/post/smile/dvbbs/em02.gif" />
taoli01
二等列兵
二等列兵
  • 金钱102RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
2楼#
发布于:2006-05-07 23:55
大家想一下,用汇编来写车载机控制程序要写多长?
cdq2000
二等列兵
二等列兵
  • 金钱36RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
3楼#
发布于:2006-08-14 23:14
<img src="images/post/smile/dvbbs/em01.gif" />
txyuseing
二等列兵
二等列兵
  • 金钱35RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
4楼#
发布于:2006-08-18 06:43
look alook
游客

返回顶部