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



No.100114
作者:Amy
邮件:amy.bai.msn@hotmail.com
ID:64437
登陆:5次
文章数:2篇
最后登陆IP:221.219.114.172
最后登陆:2006/12/11 13:38:01
注册:2006/11/30 13:24:13
财富:108
发帖时间:2006/11/30 13:36:07
发贴者IP:221.219.119.191
标题:Amy:毕业论文汇编程序改成C程序
摘要:No.100114毕业论文汇编程序改成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]
                ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:47毫秒 最大:78531毫秒 查询6次