zoukankan      html  css  js  c++  java
  • 基于DSP的IS95正向业务信道模块设计

    **定时20ms循环处理话音数据包***
    *伪指令不占空间不影响执行速度,只是定义和描述但对汇编链接有重要指示作用
    *********************************
                .title        "IS95前向信道设计"  ;源程序名
                .global        _c_int00            ;全局起始标号
                .mmregs                        ;定义所有存储器映像寄存器为全局型  定义存储器为全局符号
                .copy        "walsh.inc"        ;从"walsh.inc" 文件中复制walsh表
    STACK        .usect        "stack",10H        ;自定义未初始化堆栈的设置(调用子程序,中断时将当期执行位置自动压栈)
                .bss        pn1,2048        ;在未初始化段中保留空间,2048个字(一个字16位,一个字节8位,这里是字)
                .bss        pn2,2048
                .bss        w,1536
                .bss        wa,1536
                .bss        iq,32            ;依次存储4组8个样点波形
                                            ;SIN0+COS0;SIN0+COS180;SIN180+COS0;SIN180+COS180    
                .bss        p,4                ;P用于42级缓存三个,用于Wlash地址是4个
                .bss        q,4                ;P用于42级掩码三个,用于Wlash地址是4个
                .bss        v,1                ;用于记录pn码循环的位置0-2047
                .bss          k,1                ;k为偏置系数
                .bss        x,1        
                .bss        y,1
                .bss        z,1    
                .data                        ;为数据开辟存储空间
    cos:        .word        07fffH,05a82H,00000H,0a57fH,08002H,0a57fH,00000H,05A82H     ;Q15格式 一个或多个16位整型变量
    sin:        .word        00000H,05A82H,07fffH,05a82H,00000H,0a57fH,08002H,0a57fH    
    PA0            .set        0                 ;符号常数赋给寄存器
    PA1            .set        1                ;从此端口传速率标志1,2,4,8
    PA2            .set        2    
    PA3            .set        3
    PA4            .set        4
    PA5            .set        5
    PA6            .set        6
    PA7            .set        7
    PA8            .set        8
    PA9            .set        9                ;此端口输出调制波形
                .sect    ".vectors"            ;中断向量表(自定义已初始化段)
    rst:        B        _c_int00            ;(0号复位中断)无条件转移2个字
                NOP
                NOP                            ;两个NOP占2个字,加在一起0号中断共四个字
                .space    15*4*16                ;预留1-15号中断地址空间,每个占四个字
    int0:        B        clock                ;16号GPS外部中断
                NOP
                NOP
                .space    2*4*16                ;预留17,18号中断地址空间,每个占四个字
    tint:        B        timeout                ;19号定时中断向量(20ms(ttt3))
                NOP
                NOP
                .space    12*4*16
                .text                         ;主程序
    _c_int00
                STM        #STACK+10H,SP        ;堆栈指针 指向栈底
    
    
    ************************************************************
    *初始化,产生四种SIN与COS相加的波形
    *cos+sin, cos-sin, sin-cos, -cos-sin
    ************************************************************    
                SSBX    SXM                    ;=1符号扩展,进行算数运算,数据进入ALU中符号位扩展(SSBX 对状态寄存器ST0/1特定位置置1)
                STM        #w,AR2                ;w  AR2存放cos的样点
                STM        #wa,AR3                ;wa AR3存放sin的样点
                STM        #7, BRC             ;块循环8
                RPTB     lop1
                LD        #cos,A
                ;RPT     #7
                READA    *AR2+                ;cos w(AR2)中存8个cos样点, 按累加器A寻址读程序存储器并存入数据存储器
    lop1:        ADD        #1, A
                RPTB    lop2                                
                LD        #sin,A
                ;RPT    #7
                STM        #7, BRC
                READA    *AR3+                ;sin wa(AR3)中存8个sin样点
    lop2:        ADD        #1, A
    ;;存采样点
                STM        #iq,AR4                ;iq数据单元存放四种波形 cos+sin, cos-sin, sin-cos, -sin-cos
                STM        #w,AR2                ;指向 cos起始位置
                STM        #wa,AR3                ;指向 sin起始位置
                STM        #7,BRC
                RPTB    ttt-1    
                LD        *AR2+,A
                ADD        *AR3+,A
                STL        A,*AR4+                ;AR4 *(iq)=cos0+sin0
    
    ttt:        STM        #w,AR2
                STM        #wa,AR3
                STM        #7,BRC
                RPTB    ttt1-1    
                LD        *AR2+,A
                SUB        *AR3+,A
                STL        A,*AR4+                ;AR4 *(iq+8)=cos0+sin180
    
    ttt1:        STM        #w,AR2
                STM        #wa,AR3
                STM        #7,BRC
                RPTB    ttt2-1    
                LD        *AR3+,A
                SUB        *AR2+,A                ;AR4 *(iq+16)=cos180+sin0
                STL        A,*AR4+    
    
    ttt2:        STM        #w,AR2
                STM        #wa,AR3
                STM        #7,BRC
                RPTB    ttt3-1    
                LD        *AR2+,A
                NEG        A                    ;计数累加器反值
                SUB        *AR3+,A
                STL        A,*AR4+                ;AR4 *(iq+24)=cos180+sin180
    ;;存4种合成波形
    ************************************************************
    **初始化PN1和PN2,准正交15级M序列
    **先产生好引导序列,最后15个零,初始状态14个零,1个一
    **序列周期2^15-1=32768-1=32767
    **每两秒75个PN序列周期,1.2288Mc(M chip, 长码工作频率)/S*2S = 75*32768, 32768/16 = 2048个字
    **I(X) = x15+x13+x9+x8+x7+x5+1
    **Q(x) = x15+x12+x11+x10+x6+x5+x4+x3+1
    ************************************************************
                STM        #32767,BRC            ;循环次数 PN1
                LD        #0x0001,A            ;初始状态14个零1个一,移存器初态,1为x位
                STM        #15,AR4                ;计数器,一个字16位
                STM        #pn1,AR3            ;放置序列地址
                ST         #0X0001,*AR3        ;先输出1(存进pn1段内存空间中)
                RPTB    PP-1
                LD        #0,B                ;B为M序列反馈位
                 XOR        A,-4,B                ;x5与B异或
                 XOR        A,-6,B
                 XOR        A,-7,B
                 XOR        A,-8,B
                 XOR        A,-12,B
                 XOR        A,-14,B
                 AND        #0x0001,B
                 SFTL    A,1                    ;左移一位
                OR        B,A                    ;反馈位或到最低位
                 BANZ    PP1,*AR4-            ;未积满一个字后转移(AR4的内容为0不跳转)
                 STL        B,*+AR3                ;更新输出地址
                 STM        #15,AR4
                 B          PP2
    PP1:        ADD        *AR3,1,B
                STL        B,*AR3
    PP2:        NOP
    PP:            LD        *AR3,A                ;周期性,AR3又重新指向了pn1的开头
                AND        #0XFFFE,A            ;提前输出的1强制变为0
                STL        A,*AR3
    ************************************************************
                STM        #32767,BRC            ;PN2
                LD        #0x0001,A            ;初始状态14个零,1个一
                STM        #15,AR4                ;计数器,一个字16位
                STM        #pn2,AR3            ;放置序列地址
                ST         #0X0001,*AR3        ;先输出1
                RPTB    PPPP-1
                LD        #0,B                ;B为M序列反馈位
                 XOR        A,-2,B                ;x3与B异或
                 XOR        A,-3,B
                 XOR        A,-4,B
                 XOR        A,-5,B
                 XOR        A,-9,B
                 XOR        A,-10,B
                XOR        A,-11,B
                XOR     A,-14,B
                 AND        #0x0001,B
                 SFTL    A,1                    ;左移一位
                OR        B,A                    ;反馈位或到最低位
                 BANZ    PPPP1,*AR4-            ;未积满一个字后转移
                 STL        B,*+AR3                ;更新输出地址
                 STM        #15,AR4
                 B        PP2
    PPPP1:        ADD        *AR3,1,B
                STL        B,*AR3
    PPPP2:        NOP
    PPPP:        LD        *AR3,A                ;提前输出的1强制变为0
                AND        #0XFFFE,A
                STL        A,*AR3
    *************************************************************
    ttt3:        SSBX    INTM                ;=1,关闭所有可屏蔽中断
                RSBX    SXM                 ;=0,禁止符号位扩展
                ST        #0,*(x)                ;初始化x=0,x为十次定时记数
                STM        #0,SWWSR            ;插入0等待周期
                STM        #0xffa8,PMST        ;改变中断向量映射到0xff80,IPTR取PMST高九位9个1
                STM        #9007h,CLKMD        ;CLKMD倍频设置 PLLMUL=9,CLKIN=10M,CLKOUT=CLKIN X (PLLMUL+1)=100M
                STM        #19999,PRD            ;该为PRD=20000-1;TDDR=10-1 主频100M 则定时2ms
                STM     #0039h,TCR            ;T = t*(TDDR+1)*(PRD+1)
                                            ;TDDR=9,TSS=1停止
                
    *************************************************************
    **主程序和码元重复                    
    **速率标志1,2,4,8
    **测试标志的0123位
    *************************************************************
    susp        STM        #y,AR4                ;添加帧质量指示,速率标志
                PORTR    PA1,*AR4            ;速率标志1,2,4,8
                BIT        *AR4,15-0            ;速率1, 检测第0位,15-0最右面一位
                BC        bbb1,NTC            ;TC=0转移
                CALL    crc12                ;12位CRC校验子程序,8.6*20=172+12=184
                LD        #183,A                ;卷积输入184码元 172+12
                CALL    juanji                ;卷积加尾比特 184+8=192*2=384
                STM        #wa,AR5                ;码元重复1次,wa输出 w输入
                STM        #w,AR3
                RPT        #383                ;卷积输出384个码元,作为码元重复的输入
                MVDD    *AR3+,*AR5+            ;每个码元重复1次
                CALL    jiaozhi
                CALL    raoluan                ;42级扰乱加密子程序
                CALL    kuopin                ;沃尔什码扩频子程序
                CALL    pianzhi1
                CALL    pianzhi2
                CALL    qpsk
                B       bbb
    
    bbb1:        BIT        *AR4,15-1            ;速率2(速率1/2)
                BC        bbb2,NTC            ;TC = 0跳移
                CALL    crc8                ;8位CRC校验子程序,4.0*20 = 80+8 = 88
                LD        #87,A                ;卷积输入88码元
                CALL    juanji                ;卷积加尾比特 88+8 = 96*2 = 192
                STM        #wa,AR5                ;码元重复2次,wa输出
                STM        #w,AR3                ;w输入
                STM        #191,BRC            ;卷积输出192个码元,作为码元重复的输入
                RPTB    ccb1-1
                MVDD    *AR3,*AR5+            ;每个码元重复2次
                MVDD    *AR3+,*AR5+
    ccb1        CALL    jiaozhi
                CALL    raoluan
                CALL    kuopin
                CALL    pianzhi1
                CALL    pianzhi2
                CALL    qpsk
                B        bbb
    
    bbb2:        BIT        *AR4,15-2            ;速率4(速率1/4),检测第2位
                BC        bbb3,NTC            ;TC = 0 转移
                STM        #w,AR3
                STM        #wa,AR4
                RPT        #39                    ;2.0*20 = 40
                MVDD    *AR3+,*AR4+            ;统一接口 等效于CRC校验 wa AR3->w AR4
                LD        #39,A                ;卷积输入 40码元
                CALL    juanji                ;卷积加尾比特 40+8 = 48*2 = 96
                STM        #wa,AR5                ;码元重复4次,wa输出w输入
                STM        #w,AR3
                STM        #95,BRC                ;卷积输出96个码元,作为码元重复的输入
                RPTB    ccb2-1
                MVDD    *AR3,*AR5+            ;每个码元重复4次
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3+,*AR5+
    ccb2        CALL    jiaozhi
                CALL    raoluan
                CALL    kuopin
                CALL    pianzhi1
                CALL    pianzhi2
                CALL    qpsk
                B        bbb
    
    bbb3        STM        #w,AR3                ;速率8(速率1/8), 检测第3位
                STM        #wa,AR4
                RPT        #15                    ;0.8*20 = 16
                MVDD    *AR3+,*AR4+
                LD        #15,A                
                CALL    juanji                ;卷积加尾比特 16+8 = 24*2 = 48
                STM        #wa,AR5                ;码元重复8次,wa输出w输入
                STM        #w,AR3
                STM        #47,BRC
                RPTB    ccc-1
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3,*AR5+
                MVDD    *AR3+,*AR5+
    ccc            CALL    jiaozhi
                CALL    raoluan
                CALL    kuopin
                CALL    pianzhi1
                CALL    pianzhi2
                CALL    qpsk
                nop
    bbb         nop
    *********************************************************************
    **用x定时, 初始化于171行
    *********************************************************************        
    susp1        LD        *(x),A                ;保证程序每次间隔20ms
                SUB        #10,A
                BC        susp,AEQ    ; x = 10时,说明20ms完成, 跳到susp, 即从上面的码元重复开始从头开始执行. 判断是否到20ms,取第二个数据包处理  
                B         susp1                ;否则x < 10,没记满,时间没到,死循环等待,时间记满进行下个程序周期
    *********************************************************************        
    timeout     ADDM     #1,*(x)                ;x++ 定时中断子程序1加到十即20ms
                LD         #10,A
                SUB     *(x),A
                BC         secout,ALEQ            ;x >= 10,跳,说明10次记满,x清零,
                B         exit                ;否则直接退出中断
    secout        ST         #0,*(x)
    exit        NOP
                   RETE
    *********************************************************************        
    *外部GPS时钟2秒钟复位一次
    *根据偏置系数K确定引导pn序列的起始位置v
    *********************************************************************
    clock:        PORTR    PA0,*(k)                ;读偏置系数
                LD        *(k),2,A                ;4个字,相邻偏执系数相差64位
                AND        #0x7fc,A                ;0111,1111,1100只有中间9位有效,屏蔽低2位
                STL        A,*(v)                    ;V = k*4(即k左移两位),周期序列起始位置
                STM        #0FFFFh,IFR             ;所有中断标志置1
                STM     #0008h,IMR                ;TINT0=1定时中断开放
                RSBX     INTM                    ;=0,开放所有可屏蔽中断
                LDM        TCR,A
                AND     #0FFEFH,A
                STLM    A,TCR                    ;TSS=0,定时器启动工作
                RETE
    
    ********************************************************************
    *循环冗余编码编程
    *CRC效验子程序
    *12位帧质量指示码产生器
    *w存储172位要效验的信息
    *wa存储184位输出信息
    *f(x)=x12+x11+x10+x9+x8+x4+x+1        
    *********************************************************************
    crc12        STM        #w,AR3                ;输入输入数据间接寻址
                STM        #wa,AR4                ;输出
                LD        #0XFFF,B            ;B为12位移存器初始化,左为刚入X12,右为最早入X
                 STM        #171,BRC            ;计算172位CRC效验
                 RPTB    next-1                ;块循环
                SFTL    B,-11,A                ;B中存储12位移存器值,取最高延迟位至A中
                MVDD    *AR3,*AR4+            ;数据由w->wa,输入还没产生反馈为,
                XOR        *AR3+,A                ;最高延迟位与输入模2加产生反馈输入
                AND        #0X0001,A            ;确保只要一位
                SFTL    B,1                    ;12位移存器左移一位,图右移
                AND        #0X0FFE,B            ;x位清空,放反馈位
                XOR        A,11,B                ;产生移存器的X12,有抽头
                XOR        A,10,B                ;产生移存器的X11
                XOR        A,9,B                ;产生移存器的X10
                XOR        A,8,B                ;产生移存器的X9
                XOR        A,7,B                ;产生移存器的X8
                XOR        A,3,B                ;产生移存器的X4
                XOR        A,B                    ;产生移存器的X
    next:        NOP                            ;将存在累加器A中的校验12位码传递到信息位的最后12个字
                SFTL    B,-11,A                ;12位校验位存在B中
                AND        #0X0001,A            ;取校验最高位输出
                STL        A,*AR4+                ;AR4为输出数据地址
                SFTL    B,-10,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-9,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-8,A
                AND        #0X0001,A
                STL        A,*AR4+    
                SFTL    B,-7,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-6,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-5,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-4,A
                AND        #0X0001,A
                STL        A,*AR4+    
                SFTL    B,-3,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-2,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-2,A
                AND        #0X0001,A
                STL        A,*AR4+
                AND        #0X0001,B
                STL        B,*AR4+    
                RET    
    ***********************************************************************************
    *crc效验:F(X)=X8+X7+X4+X3+X+1
    *8位帧质量指示码产生器
    *w存储80位要效验的信息
    *wa存储88位输出信息
    ***********************************************************************************
    crc8        STM        #w,AR3                ;输入
                STM        #wa,AR4                ;输出
                   LD        #0XFF,B                ;B为8位移存器初始化,右为刚入,左为最早入
                 STM        #79,BRC                ;计算80位CRC效验
                 RPTB    nex-1
                SFTL    B,-7,A                ;取最高延迟位
                MVDD    *AR3,*AR4+            ;数据由w->wa
                XOR        *AR3+,A                ;最高延迟位与输入模2加产生反馈输入
                AND        #0X0001,A    
                SFTL    B,1                    ;移存器移位,x8在左
                AND        #0X0FE,B
                XOR        A,7,B                ;产生移存器的X8
                XOR        A,6,B                ;产生移存器的X7
                XOR        A,3,B                ;产生移存器的X4
                XOR        A,2,B                ;产生移存器的X3
                XOR        A,B                    ;产生移存器的X
    nex:        NOP                        ;将存在累加器A中的校验8位码传递到信息位的最后8个字
                SFTL    B,-7,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-6,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-5,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-4,A
                AND        #0X0001,A
                STL        A,*AR4+    
                SFTL    B,-3,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-2,A
                AND        #0X0001,A
                STL        A,*AR4+
                SFTL    B,-2,A
                AND        #0X0001,A
                STL        A,*AR4+
                AND        #0X0001,B
                STL        B,*AR4+    
                RET    
    **********************************************************************************
    *卷积编码g0=111101011      1 X X1 ... X8    ,B中相反
    *        g1=101110001
    *wa为输入数据,w为编码输出
    *包括8位尾比特处理
    **********************************************************************************
    juanji:        STLM    A,BRC                ;BRC值与速率有关,A=183,87,39,15
                STM        #wa,AR2                ;输入
                STM        #w,AR3                ;输出
                LD        #0,B                ;B中存储8位移存器,初始化0
                RPTB    ddd-1                ;循环
                LD        *AR2,A                ;当前输入送输出
                XOR        B,A                    ;g0 = 111101011
                XOR        B,-1,A                ;B移存器有抽头位异或存于A中
                XOR        B,-2,A
                XOR        B,-4,A
                XOR        B,-6,A
                XOR        B,-7,A
                AND        #0X0001,A
                STL        A,*AR3+                ;编码后输出
                LD        *AR2,A                ;g1 = 101110001
                XOR        B,-1,A                ;B移存器有抽头位异或存于A中
                XOR        B,-2,A
                XOR        B,-3,A
                XOR        B,-7,A
                AND        #0X0001,A
                STL        A,*AR3+                ;编码后输出
                SFTL    B,1
                AND        #0XFE,B
                OR        *AR2+,B
    ddd:        NOP
                STM        #7,BRC                ;加尾比特8个0
                RPTB    eee-1
                LD        #0,A                ;无输入信息
                XOR        B,A
                XOR        B,-1,A
                XOR        B,-2,A
                XOR        B,-4,A
                XOR        B,-6,A
                XOR        B,-7,A
                AND        #0X0001,A
                STL        A,*AR3+            ;将编码后比特输出
                LD        #0,A            ;无输入信息
                XOR        B,-1,A
                XOR        B,-2,A
                XOR        B,-3,A
                XOR        B,-7,A        
                AND        #0X0001,A
                STL        A,*AR3+                ;将编码后比特输出
                SFTL    B,1                    ;移存器移位
    eee:        NOP    
                RET
    *************************************************************************
    *交织器    打乱,把突发错误变为随机错误
    *将384码元横向输入一个6*64矩阵,先对64列数据进行进行比特反转寻址方式交织,再纵向依次输出。
    *输入数据在wa中,中间倒序寻址数据在w中,最后数据仍在wa中
    *************************************************************************            
    jiaozhi:    STM        #wa,AR2                ;输入,输出
                STM        #w,AR3                ;中间倒序寻址数据
                STM        #32,AR0                ;64比特反转寻址方式:AR0=64/2=32 长度一半
                STM        #64-1,BRC            ;一行64个都要打乱
                RPTB        #jj1-1
                MVDD            *AR2,*AR3+        ;
                MAR        *AR2+0B              ;不支持双操作数寻址  所以分两步实现位倒序 完成第一行64比特反转寻址交织 
    jj1:            STM        #wa+64,AR2    ;第二行首地址
                RPTB        #jj2-1
                MVDD        *AR2,*AR3+
                MAR        *AR2+0B            ;完成第二行64比特反转寻址交织
    jj2:            STM        #wa+2*64,AR2
                RPTB        #jj3-1
                MVDD        *AR2,*AR3+
                MAR        *AR2+0B            ;完成第三行64比特反转寻址交织    
    
    jj3:            STM        #wa+3*64,AR2
                RPTB        #jj4-1
                MVDD        *AR2,*AR3+
                MAR        *AR2+0B            ;完成第四行64比特反转寻址交织
    jj4:            STM        #wa+4*64,AR2
                RPTB        #jj5-1
                MVDD        *AR2,*AR3+
                MAR        *AR2+0B            ;完成第五行64比特反转寻址交织
    jj5:             STM        #wa+5*64,AR2
                RPTB        #jj6-1
                MVDD        *AR2,*AR3+
                MAR        *AR2+0B            ;完成第六行64比特反转寻址交织
    jj6:            STM        #wa,AR2
                STM        #w,AR3
                STM        #64-1,BRC         
                STM        #64,AR0            ;按列输出,上下相隔64
                RPTB    jjj1-1
                MVDD    *AR3,*AR2+            
                MAR        *AR3+0                ;同样不支持双操作数寻址,所以分两步
                MVDD    *AR3,*AR2+
                MAR        *AR3+0
                MVDD    *AR3,*AR2+
                MAR        *AR3+0
                MVDD    *AR3,*AR2+
                MAR        *AR3+0
                MVDD    *AR3,*AR2+
                MAR        *AR3+0
                MVDD    *AR3,*AR2+
                LDM        AR3,A
                SUB        #5*64-1,A        ;输出下一列,更新地址,相差-(5*64+1)
                STLM    A,AR3            ;AR3=A
    jjj1:        RET                        ;返回指令,返回到调用或发生中断的位置
    *************************************************************************
    *扰乱加密P(x)=x42+x35+x33+x31
    *             +x27+x26+x25+x22+x21+x19+x18+x17+x16
    *             +x10+x7+x6+x5+x3+x2+x+1
    *加扰之前的数据在wa中,加扰后数据在w中,p,p+1与p+2中分别放移存器低14位中14位和高14位
    *q,q+1与q+2中分别放掩码标志码低14位中14位和高14位
    *数据掩我渤莆��萑怕遥�淠康氖俏�耸�莸陌踩?
    
    *为了保密安全起见,42级移位寄存器的各级输出与用户的42比特长码掩码相与,再进行模二相加,
    *产生一种长码输出。长码的时钟工作频率是1.2288MHz,相应的长码俾适?.2288Mc/s,经64分频器,
    *输出速率为19.2kb/s的的长码比特流,再与经卷积、交织处理后的调制码元进行模加,完成数据掩蔽工作.
    *************************************************************************        
    raoluan:     STM        #wa,AR4                ;输入存储器映象寄存器寻址
                STM        #w,AR5                ;out
                STM        #384-1,AR3            ;384个要加密,循环384次,因为已用过块循环,块循环不能嵌套
                PORTR    PA2,*(p)            ;获得移存器初态低14位 ,42=14*3 端口分三次读入  绝对寻址
                LD        *(p),A
                AND        #0X3fff,A           ;确保低14
                STL        A,*(p)        
                PORTR    PA3,*(p+1)            ;获得移存器初态中14位
                LD        *(p+1),A
                AND        #0X3fff,A
                STL        A,*(p+1)    
               PORTR    PA4,*(p+2)            ;获得移存器初态高14位
                LD        *(p+2),A
                AND        #0X3fff,A
                STL        A,*(p+2)    
                PORTR    PA5,*(q)            ;获得掩码标志码低14位
                LD        *(q),A
                AND        #0X3fff,A
                STL        A,*(q)        
                PORTR    PA6,*(q+1)            ;获得掩码标志码中14位
                LD        *(q+1),A
                AND        #0X3fff,A
                STL        A,*(q+1)    
               PORTR    PA7,*(q+2)            ;获得掩码标志码高14位
                LD        *(q+2),A
                AND        #0X3fff,A
                STL        A,*(q+2)
    bbc:        STM        #63,BRC                ;42级m序列产生器同时64分频 64次掩码才输出
                RPTB    bbc1-1
                LD        #0,B                 ;B反馈位 初始化  P移存器初始状态 左X14
                 LD        *(p),A                ;*(p)存储m序列低14位     有抽头加一起产生反馈位
                XOR        A,B                   ;X   最右X
                XOR        A,-1,B                ;X2  右移1位
                XOR        A,-2,B                ;X3
                XOR        A,-4,B                ;X5
                XOR        A,-5,B                ;X6
                XOR        A,-6,B                ;X7
                XOR        A,-9,B                ;X10                
    ;            AND        #0X0001,B
                LD        *(p+1),A            ;*(p+1)存储m序列中14位  X15
                XOR        A,-1,B                ;X16
                XOR        A,-2,B                ;X17
                XOR        A,-3,B                ;X18
                XOR        A,-4,B                ;X19
                XOR        A,-6,B                ;X21
                XOR        A,-7,B                ;X22
                XOR        A,-10,B                ;X25
                XOR        A,-11,B                ;X26
                XOR        A,-12,B                ;X27
    ;            AND        #0X0001,B
                LD        *(p+2),A            ;*(p+2)存储m序列高14位 X30
                XOR        A,-2,B                ;X31
                XOR        A,-4,B                ;X33
                XOR        A,-6,B                ;X35
                XOR        A,-13,B                ;X42
                AND        #0X0001,B            ;新产生的1BIT将存入B中
                LD        *(p+1),-13,A        ;42级移位   取中14位最高位填到高14位最低位
                AND        #0X0001,A             
                ADD        *(p+2),1,A            
                AND        #0X03FF,A
                STL        A,*(p+2)            ;完成高14位移位
                LD        *(p),-13,A
                AND        #0X0001,A
                ADD        *(p+1),1,A
                AND        #0X03FF,A            
                STL        A,*(p+1)            ;完成中14位移位
                LD        *(p),1,A
                XOR        B,A                    ;反馈比特移入第一级
                AND        #0X03FF,A
                STL        A,*(p)                ;完成低14位移位    
    bbc1:        NOP    
                LD        #0,B                ;掩码与移存器状态相与模二加产生1BIT输出  秘钥 B长码输出
                LD        *(p),A
                AND        *(q),A
                STM        #13,BRC
                RPTB    bbc2-1
                XOR        A,B
                SFTL    A,-1               
    bbc2:        LD        *(p+1),A
                AND        *(q+1),A
                STM        #13,BRC
                RPTB    bbc3-1
                XOR        A,B
                SFTL    A,-1
    bbc3:        LD        *(p+2),A
                AND        *(q+2),A
                STM        #13,BRC
                RPTB    bbc4-1
                XOR        A,B
                SFTL    A,-1
    bbc4:        AND        #0X0001,B            ;B中是输出的m序列比特         可以不判断直接模2加
                BC        bbc5,BNEQ           ;  B不等于0跳转 取反
                MVDD    *AR4+,*AR5+            ;m序列输出为0直接输出信息比特
                B        bbc6
    bbc5:        LD        *AR4+,A
                XOR        #0X0001,A           ; 取反
                STL        A,*AR5+                ;m序列输出不为0输出信息反比特
    bbc6:        BANZ    bbc,*AR3-            ;循环384 判断AR3是否为0,不为0跳回去
                RET
    *********************************************************************************
    *扩频:正向CDMA信道使用64进制的沃尔什函数扩展频谱和区分信道。
    *经过长码掩蔽的调制码元速率19.kb/s与1.2288Mc/s的沃尔什函数进行模2加,即进行扩频
    
    *输入是加扰后的19.2b/s的数据存在W中384比特
    *WALSH码表存在文件table.inc中,4个字一个64位W码,存在程序区
    *PA8口输入W地址号
    *扩频后数据存在wa中,384*4=1536每个调制符号包含子码数为:64
    *********************************************************************************
    kuopin:        STM        #p,AR4                ;*(p)中是4个64位Wals地址正码   q wals地址反码
                PORTR    PA8,*(z)            ;获得W地址号,Z为地址编号
                LD        *(z),2,A         ;地址号*4 (4个字一个地址),形成偏移地址 一个wals占4个字
                AND        #0xfc,A                ;1111 1100 保证偏移地址不超过64*4
                STL        A,*(z)                     
                ADD        #table_a,A            ;table 在程序区,基址+偏移地址 形成 地址号对应的地址
                RPT        #3                    ;将4个字的walsh码读进来,存在AR4中
                READA    *AR4+               ;累加器寻址
                STM        #p,AR4                ;p中是64位正码
                STM        #q,AR5                ;q中是64位反码
                LD        *AR4+,A                ;取反码
                CMPL    A                    ;取反
                STL        A,*AR5+
                LD        *AR4+,A
                CMPL    A
                STL        A,*AR5+
                LD        *AR4+,A
                CMPL    A
                STL        A,*AR5+
                LD        *AR4+,A
                CMPL    A
                STL        A,*AR5+                ;执行4次,完成walsh码4个字的取反工作
                STM        #wa,AR3                ;wa输出
                STM        #w,AR7                ;w输入
                STM        #383,BRC            ;1个码元对应4个字的walsh码,384个码元重复384次
                RPTB    LOOP-1
                LD        *AR7+,A
                STM        #p,AR4                ;定位到正码,反码起始位置,;正极性沃尔什码
                STM        #q,AR5                ;反极性沃尔什码
                BC        LOOP1,ANEQ            ;=0, 输出正码
                MVDD    *AR4+,*AR3+            ;输出正码
                  MVDD    *AR4+,*AR3+
                  MVDD    *AR4+,*AR3+
                  MVDD    *AR4+,*AR3+
                B       LOOP-1
    LOOP1:        MVDD    *AR5+,*AR3+            ;=1 输出反码
                   MVDD    *AR5+,*AR3+            ;输出反码
                MVDD    *AR5+,*AR3+
                   MVDD    *AR5+,*AR3+
                   NOP
    LOOP:        NOP
                RET
    **********************************************************************************            
    *I信道引导序列
    *P1(x)=x15+x13+x9+x8+x7+x5+1
    *v中记录上一个数据包结束PN1所在周期中的比特位置
    *输入数据在wa中1536个字,输出在w中1536个字
    *周期为2048个字
    **********************************************************************************        
    pianzhi1:   STM        #wa,AR3                ;输入数据
                STM        #w,AR5                ;输出数据
                LD        #pn1,A                ;引导序列起始地址
                ADD        *(v),A                ;引导序列地址,绝对寻址
                STLM    A,AR4                ;AR4->引导序列地址
                LD        *(v),A                
                SUB        #512,A                ;PN序列,周期2048字,数据长1536字
                BC        ppp,AGQ                ;若V大于512,数据需分两段序列(跨PN周期)模2加 V>512跳到ppp
                STM        #1535,BRC            ;若起点V小于等于512,直接序列模2加   
                RPTB    ppp1-1              ;循环1536次                序列周期均为215(32768),
                LD        *AR3+,A                ;AR3输入
                XOR        *AR4+,A                ;AR4 PN序列
                STL        A,*AR5+
    ppp1:        B        ppp2
    ppp:        LD        #2047,A                ;V>512时,前半部分
                SUB        *(v),A
                STLM    A,BRC                ;循环次数为2048-V  BRC=2048-V-1
                RPTB    ppp3-1
                LD        *AR3+,A
                XOR        *AR4+,A                ;PN序列 AR4开始时,指向V
                STL        A,*AR5+
    ppp3:        LD        *(v),A                ;后半部分
                SUB        #513,A                ;循环次数为1536-(2048-V) = V-512    BRC=V-512-1
                STLM    A,BRC
                STM        #pn1,AR4            ;第二段数据与PN序列的起始相异或 因为PN序列是周期的
                RPTB    ppp2-1
                LD        *AR3+,A
                XOR        *AR4+,A
                STL        A,*AR5+
    ppp2:        RET
    **********************************************************************************            
    *Q信道引导序列
    *PQ(x)=x15+x12+x11+x10+x6+x5+x4+x3+1
    *v中记录上一个数据包结束PN1所在周期中的比特位置
    *输入数据在wa中1536个字,输出在wa中1536个字
    *周期2048个字
    *对V地址进行更新
    **********************************************************************************        
    pianzhi2:    STM        #wa,AR3                ;输入数据   输入和输出都是wa
                STM        #wa,AR5                ;输入数据
                LD        #pn2,A                ;引导序列地址
                ADD        *(v),A                ;引导序列起始地址
                STLM    A,AR4                ;引导序列
                LD        *(v),A
                SUB        #512,A
                BC        qqq,AGQ            ;若V大于512,分两段序列模2加
                STM        #1535,BRC            ;若起点V小于等于512,直接序列模2加
                RPTB    qqq1-1
                LD        *AR3+,A
                XOR        *AR4+,A
                STL        A,*AR5+
    qqq1:        LD        *(v),A                ;更新V地址, 为下一数据包
                ADD        #1536,A
                STL        A,*(v)
                B        qqq2
    qqq:        LD        #2047,A
                SUB        *(v),A
                STLM    A,BRC                ;循环次数为2048-V  BRC=2048-V-1
                RPTB    qqq3-1
                LD        *AR3+,A
                XOR        *AR4+,A
                STL        A,*AR5+
    qqq3:        LD        *(v),A
                SUB        #513,A                ;循环次数为V-512    BRC=V-512-1
                STLM    A,BRC
                STM        #pn2,AR4
                RPTB    qqq2-1
                LD        *AR3+,A
                XOR        *AR4+,A
                STL        A,*AR5+
    qqq2:        LD        *(v),A                ;更新V地址
                SUB        #512,A
                STL        A,*(v)
                RET
    *******************************************************************
    *QPSK调制器
    *I信道数据在W中1536*16比特,Q信道数据在WA中1536*16比特
    *IQ分别为00,01,10,11四种刺�涑鏊闹衷ご娴牟ㄐ?每种波形8个样点
    *cos+sin;cos-sin;sin-cos;-cos-sin四种波形
    *对应位置为*iq,*iq+8,iq+16,iq+24
    *******************************************************************
    qpsk:        STM        #w,AR2                    ;输入I信道
                STM        #wa,AR3                    ;输入Q信道
                STM        #1535,BRC                ;1536个字,调制 扩频结束1536字  左先来
                RPTB    kkk-1                    ;每次循环完成一个字
                LD        #iq,A                    ;iq 合成波数据
                BIT        *AR2,15-0                ;输出0位
                BC        kkk1,NTC                ;TC = 0时,地址不变
                ADD        #16,A                    ;TC = 1时,地址加16
    kkk1:        BIT        *AR3,15-0                ;测试Q支路最低位
                BC        kkk2,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk2:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7                        ;8个样点,每个样点存在一个数据单元
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-1                ;输出1位
                BC        kkk3,NTC
                ADD        #16,A
    kkk3:        BIT        *AR3,15-1
                BC        kkk4,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk4:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点            
                LD        #iq,A
                BIT        *AR2,15-2                ;输出2位
                BC        kkk5,NTC
                ADD        #16,A
    kkk5:        BIT        *AR3,15-2
                BC        kkk6,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk6:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-3                ;输出3位
                BC        kkk7,NTC
                ADD        #16,A
    kkk7:        BIT        *AR3,15-3
                BC        kkk8,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk8:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-4                ;输出4位
                BC        kkk9,NTC
                ADD        #16,A
    kkk9:        BIT        *AR3,15-4
                BC        kkk10,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk10:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-5                ;输出5位
                BC        kkk11,NTC
                ADD        #16,A
    kkk11:        BIT        *AR3,15-5
                BC        kkk12,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk12:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-6                ;输出6位
                BC        kkk13,NTC
                ADD        #16,A
    kkk13:        BIT        *AR3,15-6
                BC        kkk14,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk14:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-7                ;输出7位
                BC        kkk15,NTC
                ADD        #16,A
    kkk15:        BIT        *AR3,15-7
                BC        kkk16,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk16:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-8                ;输出8位
                BC        kkk17,NTC
                ADD        #16,A
    kkk17:        BIT        *AR3,15-8
                BC        kkk18,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk18:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波?个样点
                LD        #iq,A
                BIT        *AR2,15-9                ;输出9位
                BC        kkk19,NTC
                ADD        #16,A
    kkk19:        BIT        *AR3,15-9
                BC        kkk20,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk20:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-10                ;输出10位
                BC        kkk21,NTC
                ADD        #16,A
    kkk21:        BIT        *AR3,15-10
                BC        kkk22,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk22:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-11                ;输出11位
                BC        kkk23,NTC
                ADD        #16,A
    kkk23:        BIT        *AR3,15-11
                BC        kkk24,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk24:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-12                ;输出12位
                BC        kkk25,NTC
                ADD        #16,A
    kkk25:        BIT        *AR3,15-12
                BC        kkk26,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk26:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-13                ;输出13位
                BC        kkk27,NTC
                ADD        #16,A
    kkk27:        BIT        *AR3,15-13
                BC        kkk28,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk28:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2,15-14                ;输出14位
                BC        kkk29,NTC
                ADD        #16,A
    kkk29:        BIT        *AR3,15-14
                BC        kkk30,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk30:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
                LD        #iq,A
                BIT        *AR2+,15-15                ;输出15位处理下一个字
                BC        kkk31,NTC
                ADD        #16,A
    kkk31:        BIT        *AR3+,15-15                ;输出15位处理下一个字
                BC        kkk32,NTC
                ADD        #8,A                    ;A=*iq,*iq+8,iq+16,iq+24
    kkk32:        STLM    A,AR4                    ;A=*iq,*iq+8,iq+16,iq+24
                RPT        #7
                PORTW    *AR4+,PA9                ;输出调制波形8个样点
    kkk:        RET
    *********************************************************************
                .end                      ;结束汇编
    table_a: .sect        "table_a"
             .word    0x0000,0x0000,0x0000,0x0000,      0x0000,0x0000,0xffff,0xffff        ;0-1
             .word    0x0000,0xffff,0xffff,0x0000,        0x0000,0xffff,0x0000,0xffff        ;2-3
             .word    0x00ff,0xff00,0x00ff,0xff00,         0x00ff,0x00ff,0x00ff,0x00ff        ;4-5
             .word    0x00ff,0x00ff,0xff00,0xff00,        0x00ff,0x00ff,0x00ff,0x00ff        ;6-7
             .word    0x0ff0,0x0ff0,0x0ff0,0x0ff0,        0x0ff0,0x0ff0,0xf00f,0xf00f        ;8-9
             .word    0x0ff0,0xf00f,0xf00f,0x0ff0,         0x0ff0,0xf00f,0x0ff0,0xf00f        ;10-11
             .word    0x0f0f,0xf0f0,0x0f0f,0xf0f0,         0x0f0f,0xf0f0,0xf0f0,0x0f0f        ;12-13
             .word    0x0f0f,0x0f0f,0xf0f0,0xf0f0,        0x0f0f,0x0f0f,0x0f0f,0x0f0f        ;14-15
             .word      0x3c3c,0x3c3c,0x3c3c,0x3c3c,    0x3c3c,0x3c3c,0xc3c3,0xc3c3        ;16-17    
             .word    0x3c3c,0xc3c3,0xc3c3,0x3c3c,    0x3c3c,0xc3c3,0x3c3c,0xc3c3        ;18-19
             .word    0x3cc3,0xc33c,0x3cc3,0xc33c,    0x3cc3,0xc33c,0xc33c,0x3cc3        ;20-21
             .word    0x3cc3,0x3cc3,0xc33c,0xc33c,    0x3cc3,0x3cc3,0x3cc3,0x3cc3        ;22-23
             .word    0x33cc,0x33cc,0x33cc,0x33cc,    0x33cc,0x33cc,0xcc33,0xcc33        ;24-25
             .word    0x33cc,0xcc33,0xcc33,0x33cc,    0x33cc,0xcc33,0x33cc,0xcc33        ;26-27
             .word    0x3333,0xcccc,0x3333,0xcccc,    0x3333,0xcccc,0xcccc,0x3333        ;28-29
             .word    0x3333,0x3333,0xcccc,0xcccc,    0x3333,0x3333,0x3333,0x3333        ;30-31
             .word    0x6666,0x6666,0x6666,0x6666,    0x6666,0x6666,0x9999,0x9999        ;32-33
             .word      0x6666,0x9999,0x9999,0x6666,    0x6666,0x9999,0x6666,0x9999        ;34-35
             .word      0x6699,0x9966,0x6699,0x9966,    0x6699,0x9966,0x9966,0x6699        ;36-37
             .word      0x6699,0x6699,0x9966,0x9966,    0x6699,0x6699,0x6699,0x6699        ;38-39
             .word      0x6996,0x6996,0x6996,0x6996,    0x6996,0x6996,0x9669,0x9669        ;40-41
             .word      0x6996,0x9669,0x9669,0x6996,    0x6996,0x9669,0x6996,0x9669        ;42-43
             .word    0x6969,0x9696,0x6969,0x9696,    0x6969,0x9696,0x9696,0x6969        ;44-45
             .word      0x6969,0x6969,0x9696,0x9696,    0x6969,0x6969,0x6969,0x6969        ;46-47
                     .word      0x5a5a,0x5a5a,0x5a5a,0x5a5a,    0x5a5a,0x5a5a,0xa5a5,0xa5a5        ;48-49
             .word      0x5a5a,0xa5a5,0xa5a5,0x5a5a,    0x5a5a,0xa5a5,0x5a5a,0xa5a5        ;50-51
             .word      0x5aa5,0xa55a,0x5aa5,0xa55a,    0x5aa5,0xa55a,0xa55a,0x5aa5        ;52-53
             .word      0x5aa5,0x5aa5,0xa55a,0xa55a,    0x5aa5,0x5aa5,0x5aa5,0x5aa5        ;54-55
             .word      0x55aa,0x55aa,0x55aa,0x55aa,    0x55aa,0x55aa,0xaa55,0xaa55        ;56-57
             .word      0x55aa,0xaa55,0xaa55,0x55aa,    0x55aa,0xaa55,0x55aa,0xaa55        ;58-59
             .word    0x5555,0xaaaa,0x5555,0xaaaa,    0x5555,0xaaaa,0xaaaa,0x5555        ;60-61
             .word    0x5555,0x5555,0xaaaa,0xaaaa,    0x5555,0x5555,0x5555,0x5555        ;62-63
    TSIZE:     .set     $-table_a
    MEMORY
    {
        PAGE 0:    VECS:    origin = 0xff80,    length = 0x80
                PROG:    origin = 0x2400,    length = 0x1a00
                
        PAGE 1:    SPRAM:    origin = 0x200,        length = 0x2200      
                STACK:    origin = 0x0080,    length = 0x100
    }
    
    SECTIONS
    {
        .vectors:    {}    >    VECS     PAGE 0
        .text:        {}    >    PROG     PAGE 0
        table_a:        >    PROG    PAGE 0
        .data            >    PROG    PAGE 0
        .bss:           >    SPRAM     PAGE 1
        .stack:        {}    >    STACK     PAGE 1
    }
  • 相关阅读:
    WIN10下搭建reactnative开发Android环境
    node使用JsonWebToken 生成token,完成用户登录、登录检测
    SAP 学习网站汇总
    HTML5 学习网站收集
    优化 优化网站设计
    IoC容器 Spring.NET
    ORACLE 简介及安装
    MVC PureMVC
    HTML5 概要认识
    知识点 NHibernate
  • 原文地址:https://www.cnblogs.com/kwinwei/p/10276472.html
Copyright © 2011-2022 走看看