| 
 
注册时间2007-4-11最后登录1970-1-1 
 | 
 
| 本人抄了一段串口程序,出现如下错误,请兄弟姐妹们帮忙分析,不胜感激! 
 EMAIL:NICHOLASHUI@163.COM  MSN:NICHOLASHUI@163.COM
 QQ:35387758文字
 
 *******************
 SERIES.ASM(23): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
 SERIES.ASM(50): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
 SERIES.ASM(104): error A9: SYNTAX ERROR
 SERIES.ASM(104): error A9: SYNTAX ERROR
 SERIES.ASM(119): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(122): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(123): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(136): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(138): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(145): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(148): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(157): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(176): error A42: PHASE ERROR (PASS-2)
 SERIES.ASM(210): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(215): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(228): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(238): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(241): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(340): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(364): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(374): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(383): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(385): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(389): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(391): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(393): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(422): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(426): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(428): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(491): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(493): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(495): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(510): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(511): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(512): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(513): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(515): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(522): error A45: UNDEFINED SYMBOL (PASS-2)
 SERIES.ASM(530): error A42: PHASE ERROR (PASS-2)
 SERIES.ASM(564): warning A73: TEXT FOUND BEYOND END STATEMENT - IGNORED
 *****************************
 源程序附下:
 ****************************
 
 CR          EQU   0dh    ;carriage return
 LF          EQU   0ah    ;line feed
 ACK          EQU   6h     ;respones to remote system
 NAK          EQU   15h    ;
 CAN          EQU   18h    ;
 BAUD_1200      EQU   0e8h    ;
 BAUD_2400      EQU   0f4h    ;
 BAUD_9600      EQU   0fdh    ;
 OK          EQU   '2'    ;
 RINGING       EQU   '5'    ;
 CONNECT_1200    EQU   '10'    ;
 CONNECT_2400    EQU   '13'    ;
 MTRIES        EQU   '5'    ;
 ERASE_1       EQU   0ach    ;
 ERASE_2       EQU   04h    ;
 DUMMY        EQU   55h    ;
 WRITE_CODE     EQU   02h    ;
 READ_CODE      EQU   01h    ;
 WRITE_DATA     EQU   06h    ;
 READ_DATA      EQU   05h    ;
 it0_lo        EQU   r2     ;
 it0_hi        EQU   r3     ;
 it1          EQU   r4     ;
 index        EQU   r0     ;
 chksum        EQU   r5     ;
 temp         EQU   r6     ;
 kount        EQU   r7     ;
 DSR_         BIT   p3.3    ;
 DTR_         BIT   p3.7    ;
 RST          BIT   p1.7    ;
 SHUTDN_       BIT   p1.6    ;
 SCK          BIT   p1.4    ;
 MOSI         BIT   p1.3    ;
 MISO         BIT   p1.2    ;
 
 DSEG AT 20h
 
 flags        DATA  20h    ;
 LT0F         BIT   flags.0  ;
 LT1F         BIT   flags.1  ;
 
 ORG   30h
 rec_type:      DS    1      ;
 laddr_io:      DS    1      ;
 laddr_hi:      DS    1      ;
 data_len:      DS    1      ;
 data_buff:     DS    32     ;
 ORG   60h    ;
 stack:        DS    20h    ;
 PCON         DATA  87h    ;
 
 CSEG
 ORG   0000h   ;
 jmp   init    ;
 ORG   0003h   ;
 reti
 ORG   000Bh   ;
 jmp   timer_int   ;
 ORG   0013h      ;
 reti
 ORG   001Bh      ;
 reti           ;
 ORG   0023h      ;
 jmp   serial_int  ;
 ORG   40h
 attn_cmd:      DB    '+++',0    ;
 reset_cmd:     DB    'ATZ',CR,0   ;
 ;
 
 
 init_cmd:      DB    'AT&R1&A0',CR,0
 hangup_cmd:    DB    'ATH',CR,0
 ORG   0080h
 USING  0
 init:
 mov   sp,#(stack-1)
 call  initialize
 setb  LT0F
 setb  LT1F
 
 setb  T1
 
 setb  ET0
 call  modem_init
 clr   ET0
 jnc   m1
 clr   EA
 orl   PCON,#1
 M1:
 jnb   TI,$
 clr   TI
 clr   RI
 setb  ES
 clr   F0
 idle:
 orl   PCON,#1
 jnb   F0,idle
 
 clr   ES
 setb  TI
 clr   F0
 setb  ET0
 m2:
 call  init_longtimer()
 m3:
 call  get_char
 jc    m8
 cjne  a,#'.',m8
 call  get_record
 jnc   m4
 mov   a,#NAK
 call  send_char
 jmp   m2
 m4:          cjne  a,#0,m6
 
 jb    F0,m5
 call  shutdown
 call  erase_chip
 call  erase_pgm
 setb  F0
 m5:
 call  write_record
 call  verify_record
 jnc   m7
 mov   a,#CAN
 call  send_char
 jmp   m9
 m6:
 call  clear_pgm
 clr   F0
 m7:
 mov   a,#ACK
 call  send_char
 jmp   m2
 m8:
 jnb   LTOF,m3
 m9:
 call  hang_up
 clr   ET0
 jmp   m1
 serial_int:
 clr   F0
 clr   TI
 jnb   RI,si2
 mov   a,SUBF
 jc    si1
 anl   a,#7fh
 cjne  a,#CONNECT_1200,si
 clr   RI
 mov   a,#2
 call  delay_ms
 jnb   RI,si2
 mov   a,SBUF
 mov   c,p
 jc    si1
 anl   a,#7fh
 cjne  a,#(LOW CONNECT_9600),si1
 setb  F0
 si1:
 clr   RI
 si2:
 reti
 timer_int:
 push  psw
 setb  RS0
 jb    LT0F,ti2
 cjne  it0_lo,#0,ti1
 dec   it0_hi
 ti1:
 djnz  it0_lo,ti2
 cjne  it0_hi,#0,ti2
 
 setb  LT0F
 ti2:
 jb    LT1F,ti3
 djnz  It1,Ti3
 setb  LT1F
 ti3:
 pop   psw
 reti
 initialize:
 mov   PCON,#0
 mov   IE,#0
 mov   SCON,#010000000b
 mov   TMOD,#001000001b
 mov   TH1,#BAUD_1200
 mov   TH1,#BAUD_9600
 mov   TCON,#01000000b
 mov   TL0,#0
 mov   TH0,#0
 setb  TR0
 setb  REN
 setb  EA
 setb  DTR_
 setb  SHUTDN_
 setb  MISO
 setb  MOSI
 clr   SCK
 clr   RST
 ret
 modem_init:
 clr   DTR_
 mov   a,#1
 call  delay_sec
 mov   dptr,#attn_cmd
 call  send_string
 mov   a,#1
 call  delay_sec
 mov   dptr,#reset_cmd
 call  modem_cmd
 jc    nn1
 mov   a,#1
 call  delay_sec
 mov   dptr,#init_cmd
 call  modem_cmd
 jnc   nn2
 nn1:
 setb  DTR_
 nn2:
 ret
 mov   a,#1
 call  delay_sec
 mov   dptr,#attn_cmd
 call  send_string
 mov   a,#1
 call  delay_sec
 mov   dptr,#hangup_cmd
 call  modem_cmd
 jnc   hh
 setb  DTR_
 hh:
 ret
 push  b
 mov   b,#MTRIES
 mm1:
 call  get_char
 jc    mm3
 cjne  a,#OK,mm2
 call  get_char
 jc    mm3
 cjne  a,#CR,mm2
 clr   c
 jmp   mm4
 mm3:
 djnz  b, mm1
 setb  c
 mm4:
 pop   b
 ret
 send_string:
 push  acc
 push  dpl
 push  dph
 ss1:
 clr   a
 movc  a,@a+dptr
 jz    ss2
 call  send_char
 inc   dptr
 jmp   ss1
 ss2:
 pop   dph
 pop   dpl
 pop   acc
 ret
 send_char:
 jnb   TI,$
 clr   TI
 push  acc
 mov   c,  p
 mov   acc.7,c
 mov   SBUF,a
 pop   acc
 ret
 get_char:
 jb    RI,gc2
 call  init_longtimer1
 gc1:
 jb    RI,gc2
 jnb   LT1F,gc1
 setb  c
 jmp   gc3
 gc2:
 mov   a,SBUF
 mov   c,p
 anl   a,#7fh
 clr   RI
 gc3:
 ret
 get_byte:
 call  get_char
 jc    gb
 call  ascii2bin
 jc    gb
 swap  a
 mov   b,a
 call  get_char
 jc    gb
 call  ascii2bin
 jc    gb
 orl   a,b
 gb:
 ret
 ascii2bin:
 mov   temp,a
 clr   c
 subb  a,#('9'+1)
 jnc   a1
 mov   a,temp
 clr   c
 subb  a,#'0'
 jmp   a4
 a1:
 mov   a,temp
 subb  a,#('F'+1)
 cpl   c
 jc    a4
 a2:
 mov   a,temp
 subb  a,#'A'
 jc    a4
 a3:
 add   a,#10
 a4:
 ret
 get_record:
 mov   chksum,#0
 call  get_byte
 jc    rr4
 mov   data_len,a
 clr   c
 subb  a,#(16+1)
 jnc   rr4
 call  get_byte
 jc    rr4
 call  get_byte
 mov   laddr_hi,a
 call  get_byte
 jc    rr4
 mov   laddr_lo,a
 call  get_byte
 jc    rr4
 mov   rec_type,a
 cjne  a,#0,rr2
 mov   index,#data_buff
 mov   kount,data_len
 rr1:
 call  get_byte
 jc    rr4
 mov   @index,a
 add   a,chksum
 mov   chksum,a
 inc   index
 djnz  kount,rr1
 jmp   rr3
 rr2:
 mov   a,rec_type
 cjne  a,#1,rr4
 rr3:
 call  get_byte
 jc    rr4
 add   a,chksum
 add   a,data_len
 add   a,laddr_lo
 add   a,laddr_hi
 add   a,rec_type
 jnz   rr4
 call  get_byte
 jc    rr4
 call  get_byte
 jc    rr4
 mov   a,rec_type
 clr   c
 jmp   rr5
 rr4:
 mov   r2,laddr_io
 mov   r3,laddr_hi
 mov   a,r3
 anl   a,#00011111b
 rl    a
 rl    a
 rl    a
 orl   a,#WRTTE_CODE
 mov   temp,a
 mov   index,#data_buf
 mov   kount,data_len
 pp1:
 mov   a,temp
 call  shout
 mov   a,r2
 call  shout
 mov   a,@index
 call  shout
 mov   a,#3
 call  delay_ms
 mov   a,r2
 add   a,#1
 mov   r2,a
 jnc   pp2
 mov   a,r3
 add   a,#1
 mov   r3,a
 anl   a,#00011111b
 rl    a
 rl    a
 rl    a
 orl   a,#WRITE_CODE
 mov   temp,a
 pp2:
 inc   index
 djnz  kount,pp1
 ret
 mov   r2,laddr_io
 mov   r3,laddr_hi
 mov   a,r3
 anl   a,#00011111b
 rl    a
 rl    a
 rl    a
 orl   a,#READ_CODE
 mov   temp,a
 mov   index,#data_buf
 mov   kount,data_len
 W1:
 mov   a,temp
 call  shout
 mov   a,r2
 call  shout
 
 call  shin
 mov   b,@index
 cjne  a,b,w2
 jmp   w3
 W2:
 setb  c
 jmp   w5
 w3:
 mov   a,r2
 add   a,#1
 mov   r2,a
 jnc   w4
 mov   a,r3
 add   a,#1
 mov   r3,a
 anl   a,#00011111b
 rl    a
 rl    a
 rl    a
 orl   a,#READ_CODE
 mov   temp,a
 W4:
 inc   index
 djnz  kount,w1
 clr   c
 W5:
 ret
 push  b
 mov   b,#8
 x42:
 rlc   a
 mov   MOSI,c
 nop
 nop
 setb   SCK
 nop
 nop
 nop
 nop
 clr    SCK
 djnz   b,x42
 pop    b
 ret
 shin:
 push   b
 mov    b,#8
 x43:
 setb   SCK
 mov    c,MISO
 rlc    a
 nop
 nop
 clr    SCK
 nop
 nop
 djnz   b,x43
 pop    b
 ret
 erase_chip:
 setb   RST
 mov    a,#ERASE_1
 call   shput
 mov    a,#ERASE_2
 call   shout
 mov    a,#DUMMY
 call   shout
 mov    a,#10
 call   delay_ms
 clr    RST
 ret
 shutdown:
 clr    SHUTDN_
 mov    a,#5
 call   delay_ms
 setb   SHUTDN_
 ret
 set_pgm:
 setb   RST
 mov    a,#1
 call   delay_ms
 mov    a,#ENABLE_1
 call   shout
 mov    a,#ENABLE-2
 call   shout
 mov    a,#DUMMY
 call   shout
 ret
 clear_pgm:
 clr    RST
 ret
 setb   LT0F
 setb   RS0
 mov    it1_lo,#0c8h
 mov    it0_hi,#1
 clr    RS0
 clr    LT0F
 ret
 init_longtimer1:
 setb   LT1F
 setb   RS0
 mov    it1,#17
 clr    RS0
 clr    LT1F
 ret
 delay_ms:
 push   acc
 push   b
 mov    b,#0
 dd:
 djnz    b,$
 djnz    b,$
 djnz    acc,dd
 pop    b
 pop    acc
 ret
 delay_sec:
 push    acc
 push    b
 mov    b,a
 ddd:
 mov    a,#250
 call    delay_ms
 call    delay_ms
 call    delay_ms
 call    delay_ms
 djnz    b,ddd
 pop    b
 pop    acc
 ret
 
 END
 
 
 
 anl   a,#7fh
 cjne  a,#(HIGH CONNECT_9600),[p:4]
 | 
 |