论坛风格切换切换到宽版
  • 45468阅读
  • 306回复

GPS时钟 制作 编程 应用 [复制链接]

上一主题 下一主题
离线johncooper
发帖
18
只看该作者 140楼 发表于: 2007-05-02
我的连好后开就啥反应也没有。gps数据引脚上有电压证明模块没问题。不知道是否是像楼上老师说得那样是因为晶体没起振造成的。我手上只有数字万用表。
离线anybody-hf
发帖
1083
只看该作者 141楼 发表于: 2007-05-02
量量晶振的电压!!!!朋友现在在线吗???再的话大家讨论一下
离线anybody-hf
发帖
1083
只看该作者 142楼 发表于: 2007-05-02
我的好了,
1|确认电压5v 晶体起振,起振后 在x2和vss端有2v左右的电压。
2、在p3.0 p3.1端应该有2v以上的电压跳变
3、复位电容不要用大于22uf的,何先生用的是10uf
4、正常的开机就有显示,一段时间后gps校准。
5、何先生的电路设计很好不要更改参数
离线anybody-hf
发帖
1083
只看该作者 143楼 发表于: 2007-05-02
测试发现有时候时间停很久不走
离线BD5UYW
发帖
4657
只看该作者 144楼 发表于: 2007-05-02
[quote=anybody-hf]我的好了,
1|确认电压5v 晶体起振,起振后 在x2和vss端有2v左右的电压。
2、在p3.0 p3.1端应该有2v以上的电压跳变
3、复位电容不要用大于22uf的,何先生用的是10uf
4、正常的开机就有显示,一段时间后gps校准。
5、何先生的电路设计很好不要更改参数[/quote]

是的,只要连接正确,注意接线长度,一装就可正常工作.
离线BD5UYW
发帖
4657
只看该作者 145楼 发表于: 2007-05-02
[quote=anybody-hf]测试发现有时候时间停很久不走[/quote]

只要有数据流,就会更新显示的.晶体是否工作正常?
离线BD5UYW
发帖
4657
只看该作者 146楼 发表于: 2007-05-02
'
我的连好后开就啥反应也没有。gps数据引脚上有电压证明模块没问题。不知道是否是像楼上老师说得那样是因为晶体没起振造成的。我手上只有数字万用表。
'

不要着急,查一下电路.
anybody-hf 方法是对的:
1、确认电压5v 晶体起振,起振后 在x2和vss端有2v左右的电压。
2、在p3.0 p3.1端应该有2v以上的电压跳变

有示波器查一下更快!
离线BD5UYW
发帖
4657
只看该作者 147楼 发表于: 2007-05-02
我已标注好源程序,方便大家阅读和修改,版本:v1.0
是用89c52仿真的,89s52可用,89c51/89s51没试过.
离线BD5UYW
发帖
4657
只看该作者 148楼 发表于: 2007-05-02
;function name: gps clock
;author:      he y.w / bd5uyw   http://www.diy_cn.com
;initial date:      07/04/25
;version:      1.0

;源程序供学习应用,可以修改,转载请说明出处,tks!
;hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh


;hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
com     equ   08h       ;指令寄存器
d_data   equ   09h
d_add   equ   0ah
func_s   equ   0bh
;------------------------------------------------------------------------------
d3d     equ   10h       ;定位标志: 1=无 2=2d 3=3d
;------------------------------------------------------------------------------
lat_1   equ   10h       ;     22ཙྜ n     纬度
lat_2   equ   11h       ;2
lat_3   equ   12h       ;2
lat_4   equ   13h       ;2
lat_5   equ   14h       ;9
lat_6   equ   15h       ;8
lat_7   equ   16h       ;6
lat_8   equ   17h       ;n

lon_1   equ   18h       ;1   112གྷྑ e     经度
lon_2   equ   19h       ;1
lon_3   equ   1ah       ;2
lon_4   equ   1bh       ;0
lon_5   equ   1ch       ;7
lon_6   equ   1dh       ;8
lon_7   equ   1eh       ;5
lon_8   equ   1fh       ;e

n_1     equ   20h       ;0   2006/09/28     日期
n_2     equ   21h       ;6
y_1     equ   22h       ;0
y_2     equ   23h       ;9
r_1     equ   24h       ;2
r_2     equ   25h       ;8

h_1     equ   26h       ;0   1538       时间
h_2     equ   27h       ;6
m_1     equ   28h       ;0
m_2     equ   29h       ;9
s_1     equ   2ah       ;2
s_2     equ   2bh       ;8

hi_1   equ   2ch       ;高度千位
hi_2   equ   2dh       ;高度百位
hi_3   equ   2eh       ;高度十位
hi_4   equ   2fh       ;高度个位


sd_1   equ   30h       ;1   节 =1852m/h     时速
sd_2   equ   31h       ;1
sd_3   equ   32h       ;1
sd_4   equ   33h       ;8

fx_1   equ   34h       ;1   180.5         方向
fx_2   equ   35h       ;8
fx_3   equ   36h       ;0
fx_4   equ   37h       ;5

x_1     equ   38h       ;1   12           星数
x_2     equ   39h       ;2               星数

b_1     equ   3ah       ;时间+8
b_2     equ   3bh       ;时间+8

year_t   equ   3ch
mou_t   equ   3dh
day_t   equ   3eh
;------------------------------------------------------------------------------
mul0   equ   40h       ;低位
mul1   equ   41h
mul2   equ   42h
mul3   equ   43h       ;高位

h0     equ   44h       ;低位 ;出口
h1     equ   45h
h2     equ   46h
h3     equ   47h       ;高位
;------------------------------------------------------------------------------
bcd7   equ   48h       ;高位 ;入口
bcd6   equ   49h
bcd5   equ   4ah
bcd4   equ   4bh
bcd3   equ   4ch
bcd2   equ   4dh
bcd1   equ   4eh
bcd0   equ   4fh       ;低位 ;入口

ra_0   equ   50h
ra_1   equ   51h
ra_2   equ   52h
ra_3   equ   53h

h_t     equ   5bh
f_tmp   equ   5ch       ;暂存器定义
d_tmp   equ   5dh
m_tmp   equ   5eh
s_tmp   equ   5fh
;******************************************************************************
;##############################################################################

func   equ   p3.2       ;功能按键

;******************************************************************************
离线BD5UYW
发帖
4657
只看该作者 149楼 发表于: 2007-05-02
;*******************************************************************************

    org     0000
    ljmp   start

    org     0003h           ;功能选择键中断子程序
    ljmp   int00

    org     0013h
    ljmp   start

;*******************************************************************************

    org     0060h           ;定义起始地址

start: mov     sp,#60h           ;sp指针

    mov     func_s,#0         ;功能设置为bjt
    mov     tmod,#20h         ;方式2,自动装入8位定时器.
    mov     th1,#0fah         ;4800bps   11.0592mhz=0fah
    mov     tl1,#0           ;4800bps
    clr     ie.3             ;中断et1,clr
    setb   tcon.6           ;开定时器1

    mov     scon,#01110000b     ;8位uart/可接收
    setb   ie.0             ;ex0 on
    setb   ie.2             ;ex1 on
    setb   ie.7             ;允许中断

;*******************************************************************************
da_rx: mov     0ah,#0

w_disp: jb     ri,c_ri
    mov     r5,#005h
dl_3:   mov     r3,#010h           ;delay time
dl_1:   mov     r4,#010h
dl_2:   jb     ri,c_ri
    djnz   r4,dl_2
    djnz   r3,dl_1
    djnz   r5,dl_3

    call   disp
   
    mov     f_tmp,#0
    jmp     w_disp

c_ri:   clr     ri
    mov     a,0ah
    cjne   a,#0,wram
    mov     a,sbuf
    cjne   a,#24h,chu2
    mov     09h,#80h
    mov     0ah,#0fh
    ljmp   wram
chu2:   cjne   a,#47h,chu3
    mov     09h,#80h
    mov     0ah,#0fh
    ljmp   wram
chu3:   cjne   a,#50h,chu4
    mov     09h,#80h
    mov     0ah,#0fh
    ljmp   wram
chu4:   mov     0ah,#0
    ljmp   w_disp

wram:   mov     08h,sbuf
    mov     a,08h
    cjne   a,#2ah,wram1

    inc     09h
    mov     r0,09h
    mov     @r0,08h

mov_ff: inc     09h
    mov     r0,09h
    mov     @r0,#0ffh

    mov     a,09h
    cjne   a,#0,mov_ff

    mov     r0,09h
    mov     @r0,08h
;------------------------------------------------------------------------------
    call   dspram           ;数据处理

    mov     0ah,#0
    ljmp   w_disp
;------------------------------------------------------------------------------
wram1: mov     r0,09h
    mov     @r0,08h
    inc     09h
    mov     a,09h
    cjne   a,#0ffh,w_disp
    mov     0ah,#0
    ljmp   w_disp
;*******************************************************************************
;###############################################################################
int00: clr     ie.7
    mov     r3,#200

int08: setb   func
    nop
    jb     func,int07
    djnz   r3,int08

    inc     func_s
    mov     a,func_s
    cjne   a,#4,int_l
    mov     func_s,#0

int_l: setb   func
    mov     f_tmp,#1
    jnb     func,int_l

int07: setb   ie.7
    reti
;*******************************************************************************



;******************************************************************************
j_rmc: jmp     d_rmc
;##############################################################################
dspram: mov     r0,#83h           ;$gpgga
    cjne   @r0,#47h,j_rmc
    inc     r0
    cjne   @r0,#47h,j_rmc
    inc     r0
    cjne   @r0,#41h,j_rmc
;==============================================================================
    mov     r0,#80h           ;经度表   gpgga
    mov     r1,#2           ;第2个","
r_jd:   cjne   @r0,#2ch,j_hi       ;","
    djnz   r1,j_hi
    jmp     r_j_d

j_hi:   inc     r0
    jmp     r_jd

r_j_d: mov     r1,#lat_1

j_l:   inc     r0
    cjne   @r0,#2eh,r_j_l     ; "."
    jmp     j_r_ok

r_j_l: inc     r1
    mov     a,@r0
    mov     @r1,a
    jmp     j_l

j_r_ok: inc     r0
    inc     r1
    mov     a,@r0
    mov     @r1,a

    inc     r0
    inc     r1
    mov     a,@r0
    mov     @r1,a

    inc     r0
    inc     r0
    inc     r0

    inc     r0
    inc     r1
    mov     a,@r0           ;n
    mov     @r1,a
;==============================================================================
    mov     r0,#80h           ;纬度
    mov     r1,#4           ;第4个","
r_wd:   cjne   @r0,#2ch,w_hi       ;","
    djnz   r1,w_hi
    jmp     r_w_d

w_hi:   inc     r0
    jmp     r_wd

r_w_d: mov     r1,#lon_1-1

w_l:   inc     r0
    cjne   @r0,#2eh,r_w_l     ; "."
    jmp     w_r_ok

r_w_l: inc     r1
    mov     a,@r0
    mov     @r1,a
    jmp     w_l

w_r_ok: inc     r0
    inc     r1
    mov     a,@r0
    mov     @r1,a

    inc     r0
    inc     r1
    mov     a,@r0
    mov     @r1,a

    inc     r0
    inc     r0
    inc     r0

    inc     r0
    inc     r1
    mov     a,@r0           ;e
    mov     @r1,a
;==============================================================================
;                         ;星数   gpgga
;==============================================================================
    mov     hi_1,#0           ;高度
    mov     hi_2,#0
    mov     hi_3,#0
    mov     hi_4,#0

    mov     r0,#80h
    mov     r1,#10           ;第10个","
r_high: cjne   @r0,#2ch,r_hi       ;","
    djnz   r1,r_hi
    jmp     r_hi_d

r_hi:   inc     r0
    jmp     r_high

r_hi_d: dec     r0
    cjne   @r0,#2eh,r_hi_d     ;"."

    mov     r1,#hi_4+1

hi_l:   dec     r0

    cjne   @r0,#2ch,r_hi_l
    jmp     hi_r_ok

r_hi_l: dec     r1
    mov     a,@r0
    mov     @r1,a
    jmp     hi_l

hi_r_ok:
;==============================================================================
    mov     x_1,#0           ;星数
    mov     x_2,#0

    mov     r0,#80h
    mov     r1,#8           ;第8个","
r_star: cjne   @r0,#2ch,x_hi       ;","
    djnz   r1,x_hi
    jmp     x_hi_d

x_hi:   inc     r0
    jmp     r_star

x_hi_d: mov     r1,#x_2+1

hi_x:   dec     r0

    cjne   @r0,#2ch,x_hi_l
    jmp     x_r_ok

x_hi_l: dec     r1
    mov     a,@r0
    mov     @r1,a
    jmp     hi_x

x_r_ok: ret
;******************************************************************************
;******************************************************************************
j_gsa: jmp     d_gsa
;******************************************************************************
d_rmc: mov     r0,#83h           ;$gprmc
    cjne   @r0,#52h,j_gsa
    inc     r0
    cjne   @r0,#4dh,j_gsa
    inc     r0
    cjne   @r0,#43h,j_gsa
;==============================================================================
    mov     sd_1,#0           ;速度
    mov     sd_2,#0
    mov     sd_3,#0
    mov     sd_4,#0

    mov     r0,#80h
    mov     r1,#8           ;第8个","
r_sd:   cjne   @r0,#2ch,r_si       ;","
    djnz   r1,r_si
    jmp     r_sd_d

r_si:   inc     r0
    jmp     r_sd

r_sd_d: dec     r0
    cjne   @r0,#2ch,sd_nz
    jmp     sd_r_ok           ;","

sd_nz: mov     a,@r0
    clr     c
    subb   a,#30h
    mov     sd_4,a

    dec     r0
    mov     r1,#sd_3+1

sd_l:   dec     r0
    cjne   @r0,#2ch,r_sd_l
    jmp     sd_r_ok
r_sd_l: dec     r1
    mov     a,@r0
    clr     c
    subb   a,#30h
    mov     @r1,a
    jmp     sd_l

sd_r_ok:
;==============================================================================
    mov     fx_1,#0           ;方向
    mov     fx_2,#0
    mov     fx_3,#0
    mov     fx_4,#0

    mov     r0,#80h
    mov     r1,#9           ;第8个","
r_fx:   cjne   @r0,#2ch,r_fi       ;","
    djnz   r1,r_fi
    jmp     r_fx_d

r_fi:   inc     r0
    jmp     r_fx

r_fx_d: dec     r0
    cjne   @r0,#2ch,fx_nz
    jmp     fx_r_ok           ;","

fx_nz: mov     fx_4,@r0

    dec     r0

    mov     r1,#fx_3+1

fx_l:   dec     r0

    cjne   @r0,#2ch,r_fx_l
    jmp     fx_r_ok

r_fx_l: dec     r1
    mov     a,@r0
    mov     @r1,a
    jmp     fx_l

fx_r_ok:ret
;******************************************************************************
;******************************************************************************
j_zda: jmp     d_zda
;******************************************************************************
d_gsa: mov     r0,#83h           ;$gpgsa
    cjne   @r0,#47h,j_zda
    inc     r0
    cjne   @r0,#53h,j_zda
    inc     r0
    cjne   @r0,#41h,j_zda
;=============================================================================
    mov     r0,#80h
    mov     r1,#2           ;第2个","
r_3d:   cjne   @r0,#2ch,d_hi       ;","
    djnz   r1,d_hi
    inc     r0
    jmp     d_hi_d

d_hi:   inc     r0
    jmp     r_3d

d_hi_d: mov     d3d,@r0           ;定位状态   gprmc

d_r_ok: ret
;*******************************************************************************
j_ret: ret
;*******************************************************************************
d_zda: mov     r0,#83h           ;$gpzda
    cjne   @r0,#5ah,j_ret
    inc     r0
    cjne   @r0,#44h,j_ret
    inc     r0
    cjne   @r0,#41h,j_ret

    mov     h_1,#0           ;时间
    mov     h_2,#0
    mov     m_1,#0
    mov     m_2,#0
    mov     s_1,#0
    mov     s_2,#0

    mov     r0,#80h
    mov     r1,#1           ;第1个","
r_time: cjne   @r0,#2ch,t_hi       ;","
    djnz   r1,t_hi
    jmp     r_t_d

t_hi:   inc     r0
    jmp     r_time
;==============================================================================
r_t_d: mov     r1,#h_1-1

t_l:   inc     r0

    cjne   @r0,#2eh,r_t_l
    jmp     t_r_ok

r_t_l: inc     r1
    mov     a,@r0
    mov     @r1,a
    cjne   r0,#0ffh,t_l
    ret
t_r_ok:
;=============================================================================
    mov     r0,#80h
    mov     r1,#2           ;第9个","
r_year: cjne   @r0,#2ch,y_hi       ;","
    djnz   r1,y_hi
    inc     r0
    jmp     y_hi_d

y_hi:   inc     r0
    jmp     r_year

y_hi_d: mov     r_1,@r0           ;年月日   gprmc
    inc     r0
    mov     r_2,@r0           ;年月日   gprmc
    inc     r0             ;","
    inc     r0
    mov     y_1,@r0           ;年月日   gprmc
    inc     r0
    mov     y_2,@r0           ;年月日   gprmc
    inc     r0
    inc     r0
    inc     r0
    inc     r0
    mov     n_1,@r0           ;年月日   gprmc
    inc     r0
    mov     n_2,@r0           ;年月日   gprmc
    inc     r0
;=============================================================================
    ret
;******************************************************************************
离线BD5UYW
发帖
4657
只看该作者 150楼 发表于: 2007-05-02
;******************************************************************************
disp:   mov     a,func_s
    cjne   a,#3,d_bj
    jmp     dis_3  

    ;mov     n_1,#30h         ;时间
    ;mov     n_2,#37h
    ;mov     y_1,#30h
    ;mov     y_2,#34h
    ;mov     r_1,#32h
    ;mov     r_2,#35h

    ;mov     h_1,#31h         ;时间
    ;mov     h_2,#37h
    ;mov     m_1,#35h
    ;mov     m_2,#38h
    ;mov     s_1,#34h
    ;mov     s_2,#38h
;------------------------------------------------------------------------------
d_bj:   mov     a,h_1
    clr     c
    subb   a,#30h
    mov     b,#10
    mul     ab
    mov     b,a

    mov     a,h_2
    clr     c
    subb   a,#30h
    add     a,b
    add     a,#8
    mov     h_t,a           ;bcd to hex
;------------------------------------------------------------------------------
    add     a,#232
    jc     j_24
   
    mov     a,#0
    mov     r6,a
    mov     a,h_t
    mov     r7,a

    call   hb2         ;出口信息:转换后的BCD码整数在r5中。

    mov     a,r5
    anl     a,#00001111b
    add     a,#30h
    mov     b_2,a

    mov     a,r5
    swap   a
    anl     a,#00001111b
    add     a,#30h
    mov     b_1,a

    jmp     d_t    
;------------------------------------------------------------------------------
j_24:   mov     a,h_t
    cjne   a,#24,dy_24

    mov     b_1,#" "
    mov     b_2,#"0"
    call   inc_day           ;日期/月份/年 加检验子程序
    jmp     d_t
;------------------------------------------------------------------------------    
dy_24: mov     a,h_t
    clr     c
    subb   a,#24
    add     a,#30h
    mov     b_2,a
    mov     b_1,#" "
    call   inc_day           ;日期/月份/年 加检验子程序
;------------------------------------------------------------------------------
d_t:   call   bcd_hex           ;速度转换成km/h
    call   x1852           ;*1852   1节=1852m/h
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
d_vfd: mov     th1,#0fdh         ;9600bps   11.0592mhz=fa
    mov     tl1,#0fdh

    mov     a,#0dh
    call   s_com

    mov     a,func_s
d_s0:   cjne   a,#0,d_s1
    jmp     dis_0

d_s1:   cjne   a,#1,d_s2
    jmp     dis_1

d_s2:   cjne   a,#2,dis_0
    jmp     dis_2  
;------------------------------------------------------------------------------
dis_0: mov     a,f_tmp
    jnz     d_0
   
    mov     a,m_2
    clr     c
    subb   a,m_tmp
    jz     d0_vfd

d_0:   mov     a,#"g"           ;"g"
    call   s_com
    mov     a,#"p"           ;"p"
    call   s_com
    mov     a,#"s"           ;"s"
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#"c"           ;"c"
    call   s_com
    mov     a,#"l"           ;"l"
    call   s_com
    mov     a,#"0"           ;"o"
    call   s_com
    mov     a,#"c"           ;"c"
    call   s_com
    mov     a,#"k"           ;"k"
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     a,#"2"           ;"2"
    call   s_com
    mov     a,#"0"           ;"0"
    call   s_com

    mov     r0,#n_1           ;年_1
    mov     a,@r0
    call   s_com

    inc     r0             ;年_2
    mov     a,@r0
    call   s_com

    mov     a,#"-"           ;"/"
    call   s_com

    inc     r0             ;月_1
    mov     a,@r0
    call   s_com

    inc     r0             ;月_2
    mov     a,@r0
    call   s_com

    mov     a,#"-"           ;"/"
    call   s_com

    inc     r0             ;日_1
    mov     a,@r0
    call   s_com

    inc     r0             ;日_2
    mov     a,@r0
    call   s_com

    mov     a,#0ah
    call   s_com
    mov     a,#0dh
    call   s_com
;--------------------------------------------------------------------------------
d0_vfd:
    mov     a,d3d
    call   s_com

    mov     a,#"d"           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com

    mov     a,#"b"           ;" "
    call   s_com
    mov     a,#"j"           ;" "
    call   s_com
    mov     a,#"t"           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     r0,#b_1           ;时_1
    mov     a,@r0
    call   s_com

    inc     r0             ;时_2
    mov     a,@r0
    call   s_com

    mov     a,#":"           ;":"
    call   s_com

    mov     r0,#m_1           ;分_1
    mov     a,@r0
    call   s_com

    inc     r0             ;分_2
    mov     a,@r0
    call   s_com

    mov     a,#":"           ;":"
    call   s_com

    mov     r0,#s_1           ;秒_1
    mov     a,@r0
    call   s_com

    inc     r0             ;秒_2
    mov     a,@r0
    call   s_com

    mov     th1,#0fah         ;4800bps   11.0592mhz=fa
    mov     tl1,#0           ;4800bps

    mov     m_tmp,m_2
    mov     s_tmp,s_2
    mov     d_tmp,d3d

    ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
离线BD5UYW
发帖
4657
只看该作者 151楼 发表于: 2007-05-02
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
dis_1: mov     a,f_tmp
    jnz     d_1

    mov     a,m_2
    clr     c
    subb   a,m_tmp
    jz     d1_vfd

d_1:   mov     a,#"2"           ;"2"
    call   s_com
    mov     a,#"0"           ;"0"
    call   s_com

    mov     r0,#n_1           ;年_1
    mov     a,@r0
    call   s_com

    inc     r0             ;年_2
    mov     a,@r0
    call   s_com

    mov     a,#"-"           ;"/"
    call   s_com

    inc     r0             ;月_1
    mov     a,@r0
    call   s_com

    inc     r0             ;月_2
    mov     a,@r0
    call   s_com

    mov     a,#"-"           ;"/"
    call   s_com

    inc     r0             ;日_1
    mov     a,@r0
    call   s_com

    inc     r0             ;日_2
    mov     a,@r0
    call   s_com
;==============================================================================
    mov     a,#" "           ;" "
    call   s_com
;==============================================================================
    mov     r0,#b_1           ;时_1
    mov     a,@r0
    call   s_com

    inc     r0             ;时_2
    mov     a,@r0
    call   s_com

    mov     a,#":"           ;":"
    call   s_com

    mov     r0,#m_1           ;分_1
    mov     a,@r0
    call   s_com

    inc     r0             ;分_2
    mov     a,@r0
    call   s_com

    mov     a,#" "           ;":"
    call   s_com
    call   s_com

    mov     a,d3d
    call   s_com

    mov     a,#"d"           ;" "
    call   s_com

    mov     a,#0ah
    call   s_com
    mov     a,#0dh
    call   s_com

d1_vfd: mov     a,ra_0           ;sd_1
    cjne   a,#10h,d_sd1
    mov     a,#0
d_sd1: call   s_com_a
    mov     a,ra_1           ;sd_2
    cjne   a,#10h,d_sd2
    mov     a,#0
d_sd2: call   s_com_a
    mov     a,ra_2           ;sd_3
    call   s_com_a

    mov     a,#"k"           ;"k"
    call   s_com
    mov     a,#"m"           ;"m"
    call   s_com
    mov     a,#"/"           ;"/"
    call   s_com
    mov     a,#"h"           ;"h"
    call   s_com
;=============================================================================
    mov     a,#" "           ;"_"
    call   s_com
;=============================================================================
    mov     a,fx_1           ;fx_1
    jnz     s_fx1
    mov     a,#" "
s_fx1: call   s_com
    mov     a,fx_2           ;fx_2
    jnz     s_fx2
    mov     a,#" "
s_fx2: call   s_com
    mov     a,fx_3           ;fx_3
    jnz     s_fx3
    mov     a,#" "
s_fx3: call   s_com
    mov     a,#"."           ;"."
    call   s_com
    mov     a,fx_4           ;fx_4
    jnz     s_fx4
    mov     a,#" "
s_fx4: call   s_com
;------------------------------------------------------------------------------
    mov     a,#" "           ;"_"
    call   s_com
    call   s_com
;------------------------------------------------------------------------------
d2_dh: mov     a,d3d
    cjne   a,#33h,d_x
    jmp     d_hig
d_x:   mov     a,#" "
    call   s_com
    call   s_com
    call   s_com
    mov     a,#"_"
    jmp     s_h4
;------------------------------------------------------------------------------
d_hig: mov     a,hi_1           ;hi_1
    jnz     s_h1
    mov     a,#" "
s_h1:   call   s_com
    mov     a,hi_2           ;hi_2
    jnz     s_h2
    mov     a,#" "
s_h2:   call   s_com
    mov     a,hi_3           ;hi_3
    jnz     s_h3
    mov     a,#" "
s_h3:   call   s_com
    mov     a,hi_4           ;hi_4
    jnz     s_h4
    mov     a,#" "
s_h4:   call   s_com

    mov     a,#"m"           ;"m"
    call   s_com
;==============================================================================
    mov     th1,#0fah         ;4800bps   11.0592mhz=fa
    mov     tl1,#0           ;4800bps

    mov     m_tmp,m_2
    mov     s_tmp,s_2
    mov     d_tmp,d3d

    ret
;******************************************************************************
dis_2: mov     a,s_2
    clr     c
    subb   a,s_tmp
    jz     d2_vfd

    mov     a,#"l"           ;" "
    call   s_com
    mov     a,#"0"           ;" "
    call   s_com
    mov     a,#"n"           ;" "
    call   s_com
    mov     a,#":"           ;" "
    call   s_com

    mov     a,lon_1           ;" "
    call   s_com

    mov     a,lon_2           ;" "
    call   s_com

    mov     a,lon_3           ;" "
    call   s_com

    mov     a,#"."           ;" "
    call   s_com

    mov     a,lon_4           ;" "
    call   s_com

    mov     a,lon_5           ;" "
    call   s_com

    mov     a,#"'"           ;" "
    call   s_com

    mov     a,lon_6           ;" "
    call   s_com

    mov     a,lon_7           ;" "
    call   s_com

    mov     a,#" "           ;"/"
    call   s_com

    mov     a,lon_8           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     a,d3d
    call   s_com

    mov     a,#"d"           ;" "
    call   s_com

    mov     a,#0ah
    call   s_com
    mov     a,#0dh
    call   s_com
;--------------------------------------------------------------------------------
d2_vfd: mov     a,#"l"           ;" "
    call   s_com
    mov     a,#"a"           ;" "
    call   s_com
    mov     a,#"t"           ;" "
    call   s_com
    mov     a,#":"           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com

    mov     a,lat_2           ;" "
    call   s_com

    mov     a,lat_3           ;" "
    call   s_com

    mov     a,#"."           ;" "
    call   s_com

    mov     a,lat_4           ;" "
    call   s_com

    mov     a,lat_5           ;" "
    call   s_com

    mov     a,#"'"           ;" "
    call   s_com

    mov     a,lat_6           ;" "
    call   s_com

    mov     a,lat_7           ;" "
    call   s_com

    mov     a,#" "           ;"/"
    call   s_com

    mov     a,lat_8           ;" "
    call   s_com

    jmp     d2_dh
;******************************************************************************
dis_3: mov     th1,#0fdh         ;9600bps   11.0592mhz=fa
    mov     tl1,#0fdh

    mov     a,#0dh
    call   s_com

    mov     a,f_tmp
    jnz     d_3
   
    mov     a,m_2
    clr     c
    subb   a,m_tmp
    jz     d3_vfd

d_3:   mov     a,#"g"           ;"g"
    call   s_com
    mov     a,#"p"           ;"p"
    call   s_com
    mov     a,#"s"           ;"s"
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#"c"           ;"c"
    call   s_com
    mov     a,#"l"           ;"l"
    call   s_com
    mov     a,#"0"           ;"o"
    call   s_com
    mov     a,#"c"           ;"c"
    call   s_com
    mov     a,#"k"           ;"k"
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     a,#"2"           ;"2"
    call   s_com
    mov     a,#"0"           ;"0"
    call   s_com

    mov     r0,#n_1           ;年_1
    mov     a,@r0
    call   s_com

    inc     r0             ;年_2
    mov     a,@r0
    call   s_com

    mov     a,#"-"           ;"/"
    call   s_com

    inc     r0             ;月_1
    mov     a,@r0
    call   s_com

    inc     r0             ;月_2
    mov     a,@r0
    call   s_com

    mov     a,#"-"           ;"/"
    call   s_com

    inc     r0             ;日_1
    mov     a,@r0
    call   s_com

    inc     r0             ;日_2
    mov     a,@r0
    call   s_com

    mov     a,#0ah
    call   s_com
    mov     a,#0dh
    call   s_com
;--------------------------------------------------------------------------------
d3_vfd:
    mov     a,d3d
    call   s_com

    mov     a,#"d"           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com

    mov     a,#"u"           ;" "
    call   s_com
    mov     a,#"t"           ;" "
    call   s_com
    mov     a,#"c"           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     a,#" "           ;" "
    call   s_com
    mov     a,#" "           ;" "
    call   s_com

    mov     r0,#h_1           ;时_1
    mov     a,@r0
    call   s_com

    inc     r0             ;时_2
    mov     a,@r0
    call   s_com

    mov     a,#":"           ;":"
    call   s_com

    mov     r0,#m_1           ;分_1
    mov     a,@r0
    call   s_com

    inc     r0             ;分_2
    mov     a,@r0
    call   s_com

    mov     a,#":"           ;":"
    call   s_com

    mov     r0,#s_1           ;秒_1
    mov     a,@r0
    call   s_com

    inc     r0             ;秒_2
    mov     a,@r0
    call   s_com

    mov     th1,#0fah         ;4800bps   11.0592mhz=fa
    mov     tl1,#0           ;4800bps

    mov     m_tmp,m_2
    mov     s_tmp,s_2
    mov     d_tmp,d3d

    ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
离线BD5UYW
发帖
4657
只看该作者 152楼 发表于: 2007-05-02
;******************************************************************************
;bcd码转二进制码的程序
;bcd7/bcd6/bcd5/bcd4/bcd3/bcd2/bcd1/bcd0 to h3/h2/h1/h0
;******************************************************************************
bcd_hex:mov   bcd7,#0
    mov   bcd6,#0
    mov   bcd5,#0
    mov   bcd4,#0
    mov   bcd3,sd_1
    mov   bcd2,sd_2
    mov   bcd1,sd_3
    mov   bcd0,sd_4

b_2_h: mov   h0,#0     ;二进制输出
    mov   h1,#0
    mov   h2,#0
    mov   h3,#0

    mov   mul0,#80h   ;千万位
    mov   mul1,#96h
    mov   mul2,#98h
    mov   r0,bcd7
    call   q1
    call   lh

    mov   mul0,#40h   ;百万位
    mov   mul1,#42h
    mov   mul2,#0fh
    mov   r0,bcd6
    call   q1
    call   lh

    mov   mul0,#0a0h ;十万位
    mov   mul1,#86h
    mov   mul2,#01h
    mov   r0,bcd5
    call   q1
    call   lh

    mov   mul0,#10h   ;万位
    mov   mul1,#27h
    mov   mul2,#00h
    mov   r0,bcd4
    call   q1
    call   lh

    mov   mul0,#0e8h ;千位
    mov   mul1,#03h
    mov   mul2,#00h
    mov   r0,bcd3
    call   q1
    call   lh

    mov   mul0,#64h   ;百位
    mov   mul1,#00h
    mov   mul2,#00h
    mov   r0,bcd2
    call   q1
    call   lh

    mov   mul0,#0ah   ;十位
    mov   mul1,#00h
    mov   mul2,#00h
    mov   r0,bcd1
    call   q1
    call   lh

    mov   mul0,#01h   ;个位
    mov   mul1,#00h
    mov   mul2,#00h
    mov   r0,bcd0
    call   q1
    call   lh
    ret
;------------------------------------------------------------------------------
q1:   clr   c
    mov   a,mul0     ; mul2,mul1,mul0
    mov   b,r0     ;*r0
    mul   ab   ;---------------------------
    mov   mul0,a     ; mul3,mul2,mul1,mul0
    mov   r1,b

    mov   a,mul1
    mov   b,r0
    mul   ab
    addc   a,r1
    mov   mul1,a
    mov   r1,b

    mov   a,mul2
    mov   b,r0
    mul   ab
    addc   a,r1
    mov   mul2,a
    mov   r1,b

    mov   a,#0
    addc   a,r1
    mov   mul3,a
    ret
;------------------------------------------------------------------------------
lh:   clr   c
    mov   a,h0
    add   a,mul0     ; h3, h2, h1, h0
    mov   h0,a ; + mul3,mul2,mul1,mul0
    mov   a,h1 ;-----------------------
    addc   a,mul1     ; h3, h2, h1, h0
    mov   h1,a
    mov   a,h2
    addc   a,mul2
    mov   h2,a
    mov   a,h3
    addc   a,mul3
    mov   h3,a
    ret
;##############################################################################
;******************************************************************************

x1852: mov   h3,h0
    mov   h2,h1
    mov   h1,#0
    mov   h0,#0

    mov   ra_0,#0
    mov   ra_1,#0
    mov   ra_2,#007h
    mov   ra_3,#03ch         ;*1852   1节=1852m/h

    mov   r0,#h0           ;被乘数区
    mov   r1,#ra_0           ;乘数区
    mov   r7,#04h           ;字节数

    call   muln             ;调用muln = h0 h1 h2 h3 ho+4 h0+5 h0+6 h0+7
;------------------------------------------------------------------------------
;除100
    mov   r0,h0+7           ;l 测试值
    mov   r1,h0+6           ;h 测试值
    mov   r2,h0+5
    mov   r3,h0+4           ;

    mov   r4,#100           ;l 除100 x%
    mov   r5,#0             ;h

    call   div_4             ;商数放在r1r0中,余数放在r3r2;
;------------------------------------------------------------------------------
    mov   a,r1
    mov   r6,a
    mov   a,r0
    mov   r7,a

    call   hb2         ;出口信息:转换后的三字节BCD码整数在r3、r4、r5中。

    mov   a,r3       ;1.0*1852: r3=00h r4=01h r4=85h =1.85km/h
    anl   a,#00001111b
    add   a,#10h
    mov   ra_0,a

    mov   a,r4
    swap   a
    anl   a,#00001111b
    add   a,#10h
    mov   ra_1,a

    mov   a,r4
    anl   a,#00001111b
    add   a,#10h
    mov   ra_2,a

    mov   a,r5
    swap   a
    anl   a,#00001111b
    add   a,#10h
    mov   ra_3,a
;------------------------------------------------------------------------------
    nop
    ret
;******************************************************************************



;******************************************************************************
;r0所指的数据区,即30h-37h共八个字节。
;3字节乘法的话,把r7改成03h就可以了,结果为6个字节,高字节在前,低字节在后。
;一定要注意把r0所指的区留出存放结果的空间。比如3字节乘法,要留出6个字节空间.
;5字节乘法要留出10个字节的空间,很灵活的,想做多少字节乘法都可以。
;乘法子程序。入口:乘数r0,被乘数r1,字节数r7,结果在r0
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
muln:   lcall   n2n       ;多字节十六进制乘法
    rlc   a         ;高位字节在前 [00 00 00 01=1] !!!!!!!!!!!!!!!!!!!
    rlc   a
    mov   r3,a
muln1: mov   a,r5
    mov   r0,a
    clr   c
    lcall   rlcn
    jnc   muln2
    lcall   addn
muln2: djnz   r3,muln1
n1n:   mov   a,r1
    add   a,r7
    mov   r0,a
    mov   a,r7
    clr   c
    rrc   a
    mov   r7,a
    mov   r2,a
    add   a,r1
    mov   r1,a
muln3: dec   r0
    dec   r1
    mov   a,@r0
    mov   @r1,a
    djnz   r2,muln3
    mov   a,r5
    mov   r0,a
    ret
;
rlcn:   mov   a,r7         ;多字节二进制无符号数左移一位
rlcn1: mov   r2,a
    push   psw
    add   a,r0
    mov   r0,a
    pop   psw
rlcn2: dec   r0
    mov   a,@r0
    rlc   a
    mov   @r0,a
    djnz   r2,rlcn2
    ret
;
n2n:   mov   a,r7
    mov   r2,a
    add   a,r0
    mov   r6,a
    mov   a,r0
    mov   r5,a
    mov   a,r1
    mov   r4,a
    add   a,r7
    mov   r0,a
n2n1:   mov   a,@r1
    mov   @r0,a
    inc   r0
    inc   r1
    djnz   r2,n2n1
    mov   a,r6
    mov   r0,a
    lcall   clrn
    mov   a,r4
    mov   r0,a
    lcall   clrn
    mov   a,r4
    mov   r1,a
    mov   a,r5
    mov   r0,a
    mov   a,r7
    add   a,r7
    mov   r7,a
    ret
;
addn:   mov   a,r7
    mov   r2,a
    add   a,r0
    mov   r0,a
    mov   a,r7
    add   a,r1
    mov   r1,a
    clr   c
adn1:   dec   r0
    dec   r1
    mov   a,@r1
    addc   a,@r0
    mov   @r0,a
    djnz   r2,adn1
    ret
;
clrn:   mov   a,r7
    mov   r2,a
    add   a,r0
    mov   r0,a
    clr   a
clrn1: dec   r0
    mov   @r0,a
    djnz   r2,clrn1
    ret
;*******************************************************************************
;功   能:双字节十六进制整数转换成双字节BCD码整数
;入口条件:待转换的双字节十六进制整数在r6、r7中。
;出口信息:转换后的三字节BCD码整数在r3、r4、r5中。
;影响资源:psw、a、r2~r7 堆栈需求: 2字节
;-------------------------------------------------------------------------------
hb2:   clr   a         ;BCD码初始化
    mov   r3,a
    mov   r4,a
    mov   r5,a
    mov   r2,#10h     ;转换双字节十六进制整数
hb3:   mov   a,r7       ;从高端移出待转换数的一位到cy中
    rlc   a
    mov   r7,a
    mov   a,r6
    rlc   a
    mov   r6,a
    mov   a,r5       ;BCD码带进位自身相加,相当于乘2
    addc   a,r5
    da     a         ;十进制调整
    mov   r5,a
    mov   a,r4
    addc   a,r4
    da     a
    mov   r4,a
    mov   a,r3
    addc   a,r3
    mov   r3,a       ;双字节十六进制数的万位数不超过6,不用调整
    djnz   r2,hb3     ;处理完16bit
    ret
;*******************************************************************************
离线BD5UYW
发帖
4657
只看该作者 153楼 发表于: 2007-05-02
;*******************************************************************************
;name: div_4
;func: 四字节除双字节商为二字节除法子程序
;input: 被除数放在r3r2r1r0,除数放在r5r4,r6为被除数扩充位
;output:商数放在r1r0中,余数放在r3r2
;-------------------------------------------------------------------------------
div_4: mov   r7,#10h           ;低位字节在前 [01 00 00 00=1]
loopd: clr   c
    mov   a,r0             ;被除数左移
    add   a,r0
    mov   r0,a
    mov   a,r1
    addc   a,r1
    mov   r1,a
    mov   a,r2
    addc   a,r2
    mov   r2,a
    mov   a,r3
    addc   a,r3
    mov   r3,a
    jc     loopd1
    mov   a, r2             ;高位被除数减除数
    subb   a,r4
    mov   r2,a
    mov   a,r3
    subb   a,r5
    mov   r3,a
    jnc   loopd2
    mov   a,r2             ;恢复被除数
    add   a,r4
    mov   r2,a
    mov   a,r3
    addc   a,r5
    mov   r3,a
    djnz   r7,loopd
    ret

loopd1: clr   c
    mov   a,r2
    subb   a,r4
    mov   r2,a
    mov   a,r3
    subb   a,r5
    mov   r3,a

loopd2: inc   r0
    djnz   r7,loopd
    ret
;*******************************************************************************
;*******************************************************************************

inc_day:
    mov   a,n_1             ;日期/月份/年 加检验子程序
    clr   c
    subb   a,#30h
    mov   b,#10
    mul   ab
    mov   b,a

    mov   a,n_2
    clr   c
    subb   a,#30h
    add   a,b
    mov   year_t,a           ;bcd to hex
;--------------------------------------
    mov   a,y_1
    clr   c
    subb   a,#30h
    mov   b,#10
    mul   ab
    mov   b,a

    mov   a,y_2
    clr   c
    subb   a,#30h
    add   a,b
    mov   mou_t,a           ;bcd to hex
;--------------------------------------
    mov   a,r_1
    clr   c
    subb   a,#30h
    mov   b,#10
    mul   ab
    mov   b,a

    mov   a,r_2
    clr   c
    subb   a,#30h
    add   a,b
    mov   day_t,a           ;bcd to hex
;-------------------------------------------------------------------------------
    mov   a,mou_t           ;月
    xrl   a,#12
    jnz   mm_4
    mov   a,day_t           ;mou=12
    inc   a
    cjne   a,#32,mm_4         ;day?
    jmp   mm_3             ;mou=12   day=31

mm_4:   mov   dptr,#mou_d
    mov   a,mou_t
    xrl   a,#2
    jnz   mm_1
    mov   a,mou_t
    call   mou_j
    jmp   mm_2

mm_1:   movc   a,@a+dptr
mm_2:   mov   b,a
    inc   b
    inc   day_t
    mov   a,day_t
    cjne   a,b,t1_end

mm_3:   mov   day_t,#01h         ;日期加一/月份/年 加检验子程序
    inc   mou_t
    mov   a,mou_t
    cjne   a,#13,t1_end
    mov   mou_t,#1
    inc   year_t

t1_end: mov   a,#0
    mov   r6,a
    mov   a,year_t
    mov   r7,a

    call   hb2         ;出口信息:转换后的BCD码整数在r5中。

    mov   a,r5
    anl   a,#00001111b
    add   a,#30h
    mov   n_2,a

    mov   a,r5
    swap   a
    anl   a,#00001111b
    add   a,#30h
    mov   n_1,a
;--------------------------------------
    mov   a,#0
    mov   r6,a
    mov   a,mou_t
    mov   r7,a

    call   hb2         ;出口信息:转换后的BCD码整数在r5中。

    mov   a,r5
    anl   a,#00001111b
    add   a,#30h
    mov   y_2,a

    mov   a,r5
    swap   a
    anl   a,#00001111b
    add   a,#30h
    mov   y_1,a
;--------------------------------------
    mov   a,#0
    mov   r6,a
    mov   a,day_t
    mov   r7,a

    call   hb2         ;出口信息:转换后的BCD码整数在r5中。

    mov   a,r5
    anl   a,#00001111b
    add   a,#30h
    mov   r_2,a

    mov   a,r5
    swap   a
    anl   a,#00001111b
    add   a,#30h
    mov   r_1,a

    ret
;-------------------------------------------------------------------------------
mou_j: mov   dptr,#year_d
    mov   a,year_t
    movc   a,@a+dptr
    ret
;==============================================================================
mou_d:                       ;月表格
    db   00h
    db   31d
    db   28d
    db   31d
    db   30d
    db   31d
    db   30d
    db   31d
    db   31d
    db   30d
    db   31d
    db   30d
    db   31d
;------------------------------------------------------------------------------
year_d:                       ;年表格
    db   29d
    db   28d
    db   28d
    db   28d
    db   29d
    db   28d
    db   28d
    db   28d
    db   29d
    db   28d
    db   28d
    db   28d
    db   29d
    db   28d
    db   28d
    db   28d
    db   29d
    db   28d
    db   28d
    db   28d
;*******************************************************************************


;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
s_com_a:add   a,#20h
s_com: mov   sbuf,a
twait: jnb   ti,$             ;等特数据传送
    clr   ti               ;清除数据传送标志
    ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$



;*******************************************************************************
;*******************************************************************************
    end
离线BD5UYW
发帖
4657
只看该作者 154楼 发表于: 2007-05-02
;function name: gps clock
;author:      he y.w / bd5uyw
;initial date:      07/04/25
;version:      1.0

烧片文件:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线anybody-hf
发帖
1083
只看该作者 155楼 发表于: 2007-05-02
很好用的啊,就是在3d 时有时后时间不走,还有就是始终亮着有点耗电,而且对屏幕寿命也不好。汇编还没看,要是有c的就好看了。
何先生提个建议,能否在用两个口加一个设置开关(遥控有效和无效),另一口用一个红外头接受(不用解码)应该用任何遥控器一按就会有个1-2分钟显示然后熄灭。
呵呵,何先生方便的话就加个汇编,若太忙就算了,等汇编看完了在试试看
离线johncooper
发帖
18
只看该作者 156楼 发表于: 2007-05-04
我检查了电路,没错。gps有信号输出。测量晶体l两端电压--为0。vfd下面一行有显示--乱码,上面一行无显示。好奇怪啊。是不是89c52坏了?今天去烧一个。唉~~着急上火中......
离线johncooper
发帖
18
只看该作者 157楼 发表于: 2007-05-04
刚才测量x2端对vss电压2.19v,x1端对vss电压也是2.19v。确认了电压为5v。在p3.0 p3.1端确实也有2v以上的电压跳变。
离线johncooper
发帖
18
只看该作者 158楼 发表于: 2007-05-04
地线接到自来水管子上了。
离线johncooper
发帖
18
只看该作者 159楼 发表于: 2007-05-04

89c52的p3.1脚接这里对吧?(那个比较长的箭头是何老师原图上的指示电源的箭头。短箭头才是我要指的地方)