两位的8421拨码开关接到PORTB口,两位一组公共端接在一起,四个公共端分别接PORTD,6/PORTD,5/PORTD,4/PORTC,4/分别命名为
PTIME /RESTM /IHJ /HJTM /
读取一个的时候很简单
BSF IHJ
MOVF PORTB, W
MOVWF IHBUF
读取四个的时候
BCF PTIME
BCF RESTM
BCF IHJ
BSF HJTM
MOVF PORTB, W
CALLBCDCHB;BCD码转换为二进制码
MOVWF HJBUF ;焊接时间
CALL DELAY1;延时1ms
BCF HJTM
BCF RESTM
BCF IHJ
BSF PTIME
MOVF PORTB, W
MOVWF PRBUF ;预压时间
CALL DELAY1
BCF HJTM
BCF PTIME
BCF IHJ
BSF RESTM
MOVF PORTB, W
MOVWF RSBUF ;休止时间
CALL DELAY1
BCF HJTM
BCF PTIME
BCF RESTM
BSF IHJ
MOVF PORTB, W
CALL BCDCHB
MOVWF IHBUF ;焊接电流
CALL DELAY1
;********************BCDCHB********************
;本程序实现单字节压缩BCD码转化为二进制数。
;入口参数:原BCD码数在W中。
;出口参数:结果在W中。
;占用资源:W,STATUS,一重堆栈。
;该子程序取自一位高手的。
BCDCHB BANK0
MOVWF R2
SWAPF R2, W
ANDLW 0FH
MOVWF R3
MOVLW 0FH
ANDWF R2,F ;去掉高位
BCF C
RLF R3,0 ;高位乘以2
RLF R3,1
RLF R3,1
RLF R3,1 ;乘以8
ADDWF R3,W
ADDWF R2,F
MOVF R2, W
RETURN |