把汇编程序翻译成C语言,pic单片机汇编程序翻译成c语言解决办法

Assembly codeLIST P=16F877;

#INCLUDE

XMIT_DATA EQU 30H

DATA_CNT EQU 31H

CCPI_INT_CNT EQU 32H

ORG 000H

RESET

GOTO START

ORG 0004H

;;;;;;;;;;;;;;;;;;;;;;;;;;;CCP???

PER_INT_V

BCF STATUS,RP0; ;bank(0)

BCF PIR1,CCP1IF; ;CCP1IF=0;

INCF CCPI_INT_CNT,F; ;CCPI_INT_CNT++

BTFSS CCPI_INT_CNT,0; ;if(CCPI_INT_CNT%2=1){

GOTO SYNC_PULSE

DATA_PULSE

DECF DATA_CNT,F; DATA_CNT--;

BTFSC STATUS,Z if(DATA_CNT!=0){

GOTO PERIOD_DELTA

RLF XMIT_DATA,F; if(XMIT_DATA/128==1) CCPR1+=0x2F;

MOVLW 5EH; else CCPR1+=0x5E;

BTFSC STATUS,C; XMIT_DATA*=2;

MOVLW 2FH;

SEND_DATA;??E

ADDWF CCPR1L,F;

BTFSC STATUS,C;

INCF CCPR1H,F;

GOTO RET_FIE;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;??E???

PERIOD_DELTA

MOVLW 0EEH;

ADDWF CCPR1L,F;

BTFSC STATUS,C

INCF CCPR1H,F;

MOVLW 2;

ADDWF CCPR1H,F;

RET_FIE

BCF CCP1CON,0; ;CCP1CON.ON=0

RETFIE;??????^ }else{

SYNC_PULSE

MOVLW 2FH;

ADDWF CCPR1L,F; ;CCPR1+=0x2F

BTFSC STATUS,C;

INCF CCPR1H,F;

BSF CCP1CON,0; ;CCP1CON.ON=1

RETFIE; }

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIN()

START:

BCF STATUS,RP1;

BCF STATUS,RP0; ;BANK(0)

CLRF TMR1H

CLRF TMR1L ;TMR1=0

;MOVLW 0XFF;

;MOVWF TMR1H;

;MOVLW 0XFF;

;MOVWF TMR1L;

CLRF INTCON ;INTCON =0

CLRF PIR1 ;PIR1=0

CLRF PIR2 ;PIR2=0

BSF STATUS,RP0 ;BANK(1)

MOVLW 0X00;

MOVWF OPTION_REG ;OPTION_REG =0;

CLRF PIE1; ;PIE1=0

CLRF PIE2; ;PIE2=0

CLRF T1CON ;T1CON=0

MOVLW 0XFF;

MOVWF TRISB; ;TRISB=0xFF

MOVLW B'11111011'

MOVWF TRISC; ;TRISC=0XFB

BSF PIE1,CCP1IE; ;CCP1IE =1

BCF STATUS,RP0; ;BANK(0)

BSF INTCON,PEIE; ;PIEE=1

BSF INTCON,GIE; ;GIE =1

MOVLW 0X08;

MOVWF CCP1CON; ;CCP1CON =8

MOVLW 0X09;

MOVWF DATA_CNT; ;DATA_CNT =9

MOVLW 0XFF;

MOVWF CCPI_INT_CNT; ;CCP1_INT_CNT =0xFF

BSF T1CON,TMR1ON; ;TMR1ON =1

NEXT_BYTE ;while(1){

WAIT

MOVF DATA_CNT,W; ; if(DATA_CNT)wait();

BTFSS STATUS,Z

GOTO WAIT;

MOVF PORTB,W;

MOVWF XMIT_DATA; ; XMIT_DATA=PORTB;

MOVLW 0XFF;

MOVWF CCPI_INT_CNT; ; CCPI_INT_CNT=0xFF

MOVLW 0X09;

MOVWF DATA_CNT; ; DATA_CNT=0x09

GOTO NEXT_BYTE; }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值