📄 up2dsptest1.lst
字号:
028E 687 TXisr: ; else a TX interrupt
688
028E 8021 698 sjmp ser_ret
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 12
699 ;
0290 700 RXisr:
701 ; setb rxflag ;debug
702 ; MOV rxbuf_ptr, #1
703 ; reti ;debug
0290 9200 F 704 MOV sav_C, C
0292 F5F0 705 MOV B, A
706
0294 7400 F 707 MOV A, #rxbuf
0296 2500 F 708 ADD A, rxbuf_ptr
709
0298 8800 F 710 MOV tmp_sav, R0 ; save R0 value
029A F8 711 MOV R0, A
712
029B A699 713 mov @R0,sbuf ; read incoming character
029D A800 F 714 MOV R0, tmp_sav ; restore
029F D200 F 715 setb rxflag ; set received flag
02A1 C200 F 716 CLR rxdone ; data in rx buf
717
02A3 C3 718 CLR C
02A4 E500 F 719 MOV A, rxbuf_ptr
02A6 04 720 INC A
02A7 F500 F 721 MOV rxbuf_ptr, A ; increment to indicate value inside rxbuf
722
723 ; MOV tmp_sav, A
724
725 ;check if over half size then issue XOFF
02A9 9410 726 SUBB A, #10H ; half size = 5
02AB 5005 727 JNC send_xoff
728
02AD 729 back_seri:
02AD E5F0 730 MOV A, B ; put original value back
02AF A200 F 731 MOV C, sav_C
02B1 732 ser_ret:
02B1 32 733 reti
02B2 734 send_xoff:
02B2 D200 F 735 setb flow_control ; indicate xoff sent
736
02B4 7413 737 MOV A, #19
02B6 120000 F 738 call TRANS_BYTE
02B9 7458 739 MOV A, #'X'
02BB 120000 F 740 call TRANS_BYTE
02BE 7446 741 MOV A, #'F'
02C0 120000 F 742 call TRANS_BYTE
743
02C3 80E8 744 JMP back_seri
745
746 ;***************
02C5 020000 F 747 FILE_ERR1: JMP FILE_ERR
748
749 ;************************************
750 ; check whether it is the end of file transfer
02C8 751 FILE_chk_end:
02C8 B41BFA 752 CJNE A,#1BH, FILE_ERR1
02CB 120000 F 753 call RECEI_BYTE
02CE B41BF4 754 CJNE A,#1BH, FILE_ERR1
02D1 120000 F 755 call RECEI_BYTE ; 6FH = 'o'
02D4 120000 F 756 call RECEI_BYTE ; 0d = carriage return
02D7 120000 F 757 call RECEI_BYTE ; 0a = line feed
758 ;;;;;;;;;;;;;;;;;;;;;;;;;;SEND RESERVED BYTE TO ADDRESS 0;;;;;;;;;;;;;;;
02DA 758004 759 MOV P0, #04H
02DD C2B2 760 CLR P3.2
761
02DF 758000 762 MOV P0, #00H ;address 0x
00;
02E2 C2B6 763 CLR P3.6
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 13
02E4 D2B6 764 SETB P3.6
02E6 D2B2 765 SETB P3.2
766
767 ; retrieve low byte of address, byte0lower
768
02E8 758005 769 MOV P0, #05H
02EB C2B2 770 CLR P3.2
771
02ED 758000 772 MOV P0, #0H ;address 0x00;
02F0 C2B6 773 CLR P3.6
02F2 D2B6 774 SETB P3.6
02F4 D2B2 775 SETB P3.2
776
777 ; send RW request in addr 02
778 ; do write (1) first and then read (0)
02F6 758002 779 MOV P0, #02H
02F9 C2B2 780 CLR P3.2
781
02FB 758001 782 MOV P0, #1 ; write
02FE C2B6 783 CLR P3.6
0300 D2B6 784 SETB P3.6
0302 D2B2 785 SETB P3.2
786
0304 758006 787 MOV P0, #06H
0307 C2B2 788 CLR P3.2
789
0309 853580 790 MOV P0, byte0high ;high byte of pm data address 0
030C C2B6 791 CLR P3.6
030E D2B6 792 SETB P3.6
0310 D2B2 793 SETB P3.2
794
0312 E535 795 MOV A,byte0high
0314 120000 F 796 call seebuf
0317 758006 797 MOV P0, #06H
031A C2B2 798 CLR P3.2
799
031C 853480 800 MOV P0, byte0middle ;middle byte of pm data address 0
031F C2B6 801 CLR P3.6
0321 D2B6 802 SETB P3.6
0323 D2B2 803 SETB P3.2
0325 E534 804 MOV A,byte0middle
0327 120000 F 805 call seebuf
806
032A 758006 807 MOV P0, #06H
032D C2B2 808 CLR P3.2
809
032F 853780 810 MOV P0, byte0low ;low byte of pm data address 0
0332 C2B6 811 CLR P3.6
0334 D2B6 812 SETB P3.6
0336 D2B2 813 SETB P3.2
0338 E537 814 MOV A,byte0low
033A 120000 F 815 call seebuf
816 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;END;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
817
033D 7446 818 MOV A, #'F'
033F 120000 F 819 call TRANS_BYTE
0342 744C 820 MOV A, #'L'
0344 120000 F 821 call TRANS_BYTE
0347 744F 822 MOV A, #'O'
0349 120000 F 823 call TRANS_BYTE
034C 7441 824 MOV A, #'A'
034E 120000 F 825 call TRANS_BYTE
0351 7444 826 MOV A, #'D'
0353 120000 F 827 call TRANS_BYTE
828
0356 020000 F 829 JMP label ;await for command, DO IT ALL OVER AGAIN
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 14
830
831
832 ;*****************************************************
833 ; DOING FILE TRANSFER, LOADING INTO DSP CHIP
834 ;*****************************************************
835 ; R2 indicate PM/DM
836 ; 0xa, b stores current address being transferred
837 ; 0xc,d,e stores current data being transferred
838 ; 0x10,11,12,13 stores checksum value
839 ;
0359 446F776E 840 prompt3: db 'Download ',0
035D 6C6F6164
0361 2000
841
0363 842 FILE_XFR:
843 ; mov dptr,#prompt3
844 ; lcall outstr
845
850
0363 120000 F 851 call RECEI_BYTE
0366 B41B2C 852 CJNE A,#1BH, FILE_ERR2
0369 120000 F 853 call RECEI_BYTE
036C B46926 854 CJNE A,#69H, FILE_ERR2 ; i = x69
855
036F 874 FILE_new_seg:
875
036F 120000 F 876 call RECEI_BYTE
0372 B40D20 877 CJNE A,#0DH, FILE_ERR2 ; carriage return = 0d0a but only
see 0d
878 ;KK can see it in scope so it has to take into account
0375 120000 F 879 call RECEI_BYTE
0378 B40A1A 880 CJNE A,#0aH, FILE_ERR2 ; carriage return = 0d0a but only
see 0d
881
037B 120000 F 882 call RECEI_BYTE
037E B44011 883 CJNE A,#40H, FILE_chk_end1 ; @
884
0381 120000 F 885 call RECEI_BYTE
0384 B45004 886 CJNE A,#'P', FILE_DM
887 ;FILE_PM:
888
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 15
0387 7A00 892 MOV R2, #0H ; flag to be used when sending to dsp
893
0389 8043 894 SJMP FILE_SEG1 ;continue in common code segment 1
038B 895 FILE_DM:
038B B44407 896 CJNE A,#'D', FILE_ERR2
897
038E 7A40 901 MOV R2, #40H ; flag to be used when sending to dsp
902
0390 803C 903 SJMP FILE_SEG1
904
0392 905 FILE_chk_end1:
0392 020000 F 906 JMP FILE_chk_end ;KK
907 ;**************
0395 908 FILE_ERR2:
0395 020000 F 909 JMP FILE_ERR
910
911 ;***********************************
912 ; detected the end of segment, now check checksum
0398 913 FILE_end_seg:
0398 7468 914 MOV A, #'h'
039A 120000 F 915 call TRANS_BYTE
916
039D 120000 F 917 call RECEI_BYTE
03A0 B431F2 918 CJNE A,#'1', FILE_ERR2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -