导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→毕业论文汇编程序改成C程序[Amy]

 *第44773篇: 毕业论文汇编程序改成C程序

  
楼 主:Amy 2006年11月30日13:36
 毕业论文汇编程序改成C程序
马上要毕业了,老师要求很严呀!我天生对程序不感冒,可是我得毕业呀!各位能帮帮我把下面的程序写成C的吗?谢谢哥哥姐姐们了!

程序 
CSX EQU P2.0
SI EQU P2.1
SCK EQU P2.2
SO EQU P2.3
SUBF EQU 20H        ;定义缓冲单元
OV EQU 21H          ;设立溢出标志
F0 EQU 22H          ;设立判断标志
ORG 0000H
       SJMP START
       ORG 0003H          ;中断0入口地址
       LJMP INT0 
       ORG 000B           ; 中断1入口地址
       LJMP INT1
       RETI
       ORG 0060H
START: MOV SP #61H         ;栈指针=61H, 61H~7FH
       CLR A
       CLR B
       MOV R0,#5FH
NEXT0:MOV @R0,A           ;清01H~5FH单元
       DJNZ R0,NEXT0
       MOV TMOD,#0DH
       MOV TL0,A
       MOV TH0,A           ;定时器清零
       MOV DPTR,#77F8H     ;P2.7=0且指向0通道
       MOV R7,#2           ;置通道数
       ORG 1800H
XWRSR: MOV A,#1            ;X5045写使能
       ACALL X5045
       CLR P2.1            ;清时钟
       RET
XWRDI: MOV A,#4            ;禁止写
       SJMP XCM
X5045: CLR P2.0            ;片选X5045
       MOV R6,#8           ;串行8位数据
CZD:  CLR P2.1
      RLC A
      MOV P2.3,C           ;写入
      NOP
      SETB P2.1            ;置时钟高电平
      NOP
      DJNZ R6, CZD
RET
XWREN:MOV A,#06H
XCM:  ACALL X5045
      CLR P2.1
      SETB P2.0
      RET
      ACALL XWREN
      ACALL XWRSR
      MOV A, #0DH
      ACALL X5045
      SETB P2.0
      ACALL XBUY
XBUY: MOV R5,#0
XBUZ: ACALL XRSDR
      JNB ACC.0, XBEND
      DJNZ R5, XBUZ
XBEND:RET
XRSDR:MOV A,#5               ;读指令
      ACALL X5045
      ACALL X5IN
      SETB P2.0
      RET
X5IN: MOV R6,#8              ;8位数据
IPUT: SETB P2.0
      NOP
      CLR P2.1
      MOV C,P2.3             ;读出
      RLC A
      DJNZ R6, IPUT
      RET
CYCX:MOV   DPTR, #77F8H    ;从IN0开始采样
MOV  R0, #30H
MOV  R7, #2
CY1:  MOVX  @DPTR,  A        ;启动ADC0809
MOV A, #5              ;等10个时钟再查询EOC
DJNZ ACC,$
JNB P1.6, $
MOVX A, @DPTR          ;读ADC0809结果
MOV @R0, A
INC DPTR   
INC R0
DJNZ R7, CY1
MOV B, @R0
RET 
CLR C
MOV R1, 30H
MOV A, 31H
SUBB A, R1
JNC KBC 
MOV R3, 31H 
MOV R5, 30H
KBC : MOV R3, 30H 
MOV R5, 31H
LCALL DAVG 
DAVG :CLR A
         MOV R6,A    
         MOV R7,A
         MOV R0,#4       ;N=4
   DAV1:LCALL CYCX       ;A/D输入值送寄存器B,A中
         MOV R1,A        ;保存输入值地位
         ADD A,R7        ;累加输入值
         MOV R7,A
         MOV A,B
         ADDC A,R6
         MOV R6,A
         CLR C           ;输入值与最小值作比较
         MOV A,R3
         SUBB A,R1
         MOV A,R2
         SUBB A,B
         JNC DAV2
         MOV A,R1       ;输入值大于最大值
         MOV R3,A
         MOV R2,B
   DAV2:CLR C           ;输入值与最小值作比较
         MOV A,R1
         SUBB A,R5
         MOV A,B
         SUBB A,R4
         JNC DAV3
         MOV A,R1        ;输入值小于最小值
         MOV R5,A
         MOV R4,B
   DAV3:DJNZ R0,DAV1
         CLR C
         MOV A,R7        ;累加和中减去最大值 
        SUBB A,R3
         XCH A,R6
         SUBB A,R2
         XCH A,R6        ;累加和中减去最小值 
         SUBB A,R5
         XCH A,R6
         SUBB A,R4
         CLR C              ;除以2
         RRC A
         XCH A,R6
         RRC A
         MOV R7,A          ;R6R7中为平均值
         RET 
         PUSH ACC
      PUSH PSW
INTC: JB  P3.3,INTC      ;等待/INT1变为低电平
SETB TR1
LOOP1:JNB  P3.3,   LOOP1  ; 等待/INT1变为高电平
JB   P3.3,   LOOP2  ; 等待/INT1变为低电平
CLR TR1
MOV A, TL1
MOV R3, A           ;被乘数低八位存放处
MOV A, TH1
MOV R2, A            ;被乘数高八位存放处
MOV R6, #00H
MOV R7, #03H
LCALL MULD
MOV R6, #03H
MOV R7, #0E8H
LCALL DIVD
MOV A, R7
MOV DPTR, TAB1        ;查余弦表
MOVC A, @A+DPTR
LCALL XSCX
MOV A, R7
MOV DPTR, TAB2        ;查正弦表
MOV A, @A+DPTR
POP PSW
POP ACC
RETI
BCCX:CJNE A, #95,LOOP1    ;A>0.95转                
CJNE A, #85,LOOP     ;A>0.85转
LCALL XSCX
LCALL XS2
SETB P1.0
SETB P1.1
SETB P1.2
SETB P1.3
SETB P1.4
SETB P1.5
AJMP BCCX
LOOP1:CJNE A, #98, LOOP3   ;A>0.98转
LCALL XSCX
LCALL XS1
AJMP BCCX
LOOP2:LCALL XSCX
LCALL XS2
SETB P1.3
SETB P1.4
SETB P1.5            
CJNE A, #95,LOOP3   ;A <0.95转
LCALL XSCX
LCALL XS1
AJMP BCCX
LOOP4: LCALL XSCX
      LCALL XS2
SETB P1.0
SETB P1.1
SETB P1.2
AJMP BCCX
LOOP3:LCALL XSCX
LCALL XS3
CLR P1.3
       CLR P1.4
       CLR P1.5
       CJNE A, #98,LOOP5    ;A≥0.98转
AJMP BCCX
LOOP5:LCALL XSCX
   LCALL XS3
CLR P1.0
        CLR P1.1
        CLR P1.2
        RET
        PUSH PSW
        PUSH ACC
  INTX: JNB P3.2,INTX
XSCX: MOV SCON, #00H
         MOV R3, #00H
         MOV A, R3
         MOV DPTR, #TAB
         MOV A, @A+DPTR
         MOV SBUF, A
         LCALL DELAY
         MOV A, R6
         MOVC A, @A+DPTR
         MOV SBUF, A
         LCALL DELAY
         MOV A, R7
         MOVC A, @A+DPTR
         MOV SBUF, A
         LCALL DELAY 
     L4: JNB TI, L4
          CLR TI
          POP PSW
          POP ACC 
          RETI
TAB: DB  0C0H 0F9H 0A4H 0B0H
         DB  99H 92H 82H 0F8H 90H 
DELAY:MOV  R6,#10H
L5: MOV  R7,#38H
 L6:DJNZ  R7,L6
         DJNZ  R6,L5
         RET
XS1:MOV A, #02H
   MOV SBUF, A 
   RET
XS2:MOV A, #09H
     MOV SBUF, A
     RET
XS3:MOV A, #04H
     MOV SBUF, A
     RET
MULD功能:双字节二进制无符号数乘法
;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节


计算原理如下:
                                   [R2]   [R3]
                             ×    [R6]   [R7]
                                 [R3R7]H  [R3R7]L
                     [R2R7]H    [R2R7]L
                     [R3R6]H    [R3R6]L
    +    [R2R6]H    [R2R6]L
          [R4]       [R5]       [R6]      [R7]
MULD:MOV A,R3 ;计算R3乘R7
  MOV B, R7
  MUL AB
  MOV R4,B ;暂存部分积
  MOV R5, A
  MOV A,R3 ;计算R3乘R6
  MOV B, R6
  MUL AB
  ADD A, R4 ;累加部分积
  MOV R4, A
  CLR A
  ADDC A, B
  MOV R3,A
  MOV A,R2 ;计算R2乘R7
  MOV B, R7
  MUL AB
  ADD A, R4 ;累加部分积
  MOV R4, A
  MOV A, R3
  ADDC A, B
  MOV R3, A
 CLR A
 RLC A
 XCH A, R2 ;计算R2乘R6
 MOV B, R6
 MUL AB
 ADD A, R3 ;累加部分积
 MOV R3, A
 MOV A, R2
 ADDC A, B
 MOV R2, A
 RET
;DIVD 功能:双字节二进制无符号数除法
;入口:被除数在R2、R3、R4、R5中,除数在R6、R7中。
;出口:OV=0 时,双字节商在R6、R7中,余数在R2、R3中,OV=1 时溢出。
;影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节
DIVD: CLR C  ;比较被除数和除数
    MOV A, R3
    SUBB A, R7
    MOV A, R2
    SUBB A, R6
    JC DVD1
    SETB OV  ;溢出
    RET
DVD1: MOV B, #16 ;计算双字节商
DVD2: CLR C     ;部分商和余数同时左移一位
    MOV A,R5
    RLC A
    MOV R5, A
    MOV A, R4
RLC A
   MOV R4, A
   MOV A, R3
   RLC A
   MOV R3, A
   XCH A, R2
   RLC A
   XCH A, R2
   MOV F0,C       ;保存溢出位
   CLR C
   SUBB A, R7    ;计算(R2R3-R6R7)
   MOV R1, A
   MOV A, R2
   SUBB A, R6
   ANL C,/F0    ;结果判断
   JC DVD3
   MOV R2, A    ;够减,存放新的余数
   MOV A, R1
   MOV R3, A
   INC R5     ;商的低位置一
DVD3:DJNZ B,DVD2     ;计算完十六位商(R4R5)
   MOV A, R4    ;将商移到R6R7中
   MOV R6, A
   MOV A, R5
   MOV R7, A
   CLR OV        ;设立成功标志
   RET


TAB1    DB 00H, 02H      ;90,89度余弦值
        DB 03H, 05H      ;88,87度余弦值
        DB 07H, 09H      ;86,85度余弦值
        DB 10H, 12H      ;84,83度余弦值
        DB 14H, 16H      ;82,81度余弦值
        DB 17H,19H      ;80,79度余弦值
        DB 21H, 23H      ;78,77度余弦值
        DB 24H, 26H      ;76,75度余弦值
        DB 28H, 29H      ;74,73度余弦值
        DB 31H, 33H      ;72,71度余弦值
        DB 34H, 36H      ;70,69度余弦值
        DB 37H, 39H      ;68,67度余弦值
        DB 41H, 42H      ;66,65度余弦值
        DB 44H, 45H      ;64,63度余弦值
        DB 47H, 48H      ;62,61度余弦值
        DB 50H, 52H      ;60,59度余弦值
        DB 53H, 54H      ;58,57度余弦值
        DB 56H, 57H      ;56,55度余弦值
        DB 59H, 60H      ;54,53度余弦值
        DB 62H, 63H      ;52,51度余弦值 
        DB 64H, 66H      ;50,49度余弦值
        DB 67H, 68H      ;48,47度余弦值
        DB 69H, 71H      ;46,45度余弦值
        DB 72H, 73H      ;44,43度余弦值
        DB 74H, 75H      ;42,41度余弦值
        DB 77H, 78H      ;40,39度余弦值
        DB 79H, 80H      ;38,37度余弦值
        DB 81H, 82H      ;36,35度余弦值
        DB 83H, 84H      ;34,33度余弦值
        DB 85H, 86H      ;32,31度余弦值
        DB 87H, 87H      ;30,29度余弦值
        DB 88H, 89H      ;28,27度余弦值
        DB 90H, 91H      ;26,25度余弦值
        DB 91H, 92H      ;24,23度余弦值
        DB 93H, 93H      ;22,21度余弦值
        DB 94H, 96H      ;20,19度余弦值
        DB 96H, 96H      ;18,17度余弦值
        DB 96H, 97H      ;16,15度余弦值
        DB 97H, 97H      ;14,13度余弦值
        DB 98H, 98H      ;12,11度余弦值
        DB 98H,99H      ;10,9度余弦值
        DB 99H, 99H      ;8,7 度余弦值
        DB 99H, 99H      ;6,5度余弦值
        DB 99H, 99H      ;4,3度余弦值
        DB 99H, 99H      ;2,1度余弦值
        DB 99H           ;0度余弦值
TAB2    DB 99H,99H,99H,98H      ;90,89度正弦值
        DB 99H,93H,99H,86H      ;88,87度正弦值
        DB 99H,75H,99H,61H      ;86,85度正弦值
        DB 99H,45H,99H,25H      ;84,83度正弦值
        DB 99H,02H,98H,77H      ;82,81度正弦值
        DB 98H,48H,98H,16H      ;80,79度正弦值
        DB 97H,81H,97H,44H      ;78,77度正弦值
        DB 97H,03H,96H,59H      ;76,75度正弦值
        DB 96H,13H,95H,63H      ;74,73度正弦值
        DB 95H,11H,94H,55H      ;72,71度正弦值
        DB 93H,97H,93H,36H      ;70,69度正弦值
        DB 92H,72H,92H,05H      ;68,67度正弦值
        DB 91H,35H,90H,63H      ;66,65度正弦值
        DB 89H,88H,89H,10H      ;64,63度正弦值
        DB 88H,29H,87H,46H      ;62,61度正弦值
        DB 86H,60H,85H,72H      ;60,59度正弦值
        DB 84H,80H,83H,87H      ;58,57度正弦值
        DB 82H,90H,81H,92H      ;56,55度正弦值
        DB 80H,90H,79H,86H      ;54,53度正弦值
        DB 78H,80H,77H,71H      ;52,51度正弦值
        DB 76H,60H,75H,47H      ;50,49度正弦值
        DB 74H,31H,73H,14H      ;48,47度正弦值
        DB 71H,93H,70H,71H      ;46,45度正弦值
        DB 69H,46H,68H,20H      ;44,43度正弦值
        DB 66H,91H,65H,61H      ;42,41度正弦值
        DB 64H,28H,62H,93H      ;40,39度正弦值
        DB 61H,57H,60H,18H      ;38,37度正弦值
        DB 58H,78H,57H,36H      ;36,35度正弦值
        DB 55H,92H,54H,46H      ;34,33度正弦值
        DB 52H,99H,51H,50H      ;32,31度正弦值
        DB 50H,00H,48H,48H      ;30,29度正弦值
        DB 46H,95H,45H,40H      ;28,27度正弦值
        DB 43H,84H,42H,26H      ;26,25度正弦值
        DB 40H,67H,39H,07H      ;24,23度正弦值
        DB 37H,46H,35H,84H      ;22,21度正弦值
        DB 34H,20H,32H,56H      ;20,19度正弦值
        DB 30H,90H,29H,24H      ;18,17度正弦值
        DB 27H,56H,25H,88H      ;16,15度正弦值
        DB 24H,19H,22H,50H      ;14,13度正弦值
        DB 20H,79H,19H,08H      ;12,11度正弦值
        DB 17H,36H,15H,64H      ;10,9度正弦值
        DB 13H,92H,12H,19H      ;8,7度正弦值
        DB 10H,45H,08H,72H      ;6,5度正弦值
        DB 06H,97H,05H,23H      ;4,3度正弦值
        DB 03H,49H,01H,75H      ;2,1度正弦值
        DB 00H,00H              ;0度正弦值
        END

  
2楼:Amy 2006年12月1日11:29
 毕业论文汇编程序改成C程序
收到短消息说有人回复, 怎么看不到?  谢谢各位好心的哥哥姐姐回复!

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:[原创]电子设计大赛(学生) QQ:17059425

[下一篇主题]:UHF无线麦克风