?? led.asm
字號:
;===========================================================
;==========GAS LED DISPLAY CONTROL==========================
;===========================================================
;1-8ms PETROL_LED 25ms
;8-10ms GAS_LED SHANSUO 75ms
;10-18ms LED1 125ms
;18-20ms LED2
;20-28ms LED3 225ms
;28-30ms LED4
;30-38ms LED5 325ms
;38-40ms LED6 375ms
;40 SHANSUO
;PORTB
;#DEFINE BEEP 0x0
;#DEFINE SW_IN 0x5 ;1
#DEFINE TEST 0x4 ;1
;1
#DEFINE GAS 0x2 ;0
#DEFINE LIGHT_IN 0x5 ;1
#DEFINE SW_OUT 0x0 ;0
;PORTC
#DEFINE PERL 0x5
#DEFINE LED1 0x4
#DEFINE LED2 0x3
#DEFINE LED3 0x2
#DEFINE LED4 0x1
#DEFINE LED5 0x0
#DEFINE OUT_TIMER 0x10
#DEFINE DOGCNT 0x11
#DEFINE LG_FILTER 0x12
#DEFINE FLAG 0x13
#DEFINE START_COME 0x0
#DEFINE WAIT_OVER 0x1
#DEFINE DELAY 0x15
#DEFINE BIT_CNT 0x16
#DEFINE COM_DATA 0x17
#DEFINE OUTB 0x1A
#DEFINE SW_FILTER 0x1B
#DEFINE OUT_VALUE 0x1C
#DEFINE WIDTH 0x3;2--5
include "P16F505.INC"
ORG 0x0000
NOP
NOP
NOP
GOTO START
ORG 0x10
START:
INI_PIN:
;MOVLW 0x2A ;11 1010 Only RB2 is output
MOVLW 0x3A
TRIS PORTB
MOVLW 0x0 ;All RC are output
TRIS PORTC
INI_CNTL:
; CLRF OSCCAL
; movlw 0Xff
; movwf OSCCAL
;MOVLW 0x5 ;Prescaler assigned to tmr0 1:256 128 64
MOVLW 0x05 ;0x3
OPTION ;4m/4=1m 1us *64=0.064MS
MOVLW 0xFF
MOVWF PORTB
MOVWF PORTC
MOVWF FLAG
MOVLW 0xF0
MOVWF TMR0
CLRF SW_FILTER
MOVLW 0x0A
MOVWF LG_FILTER
MOVLW 0xA
MOVWF OUT_TIMER
MOVWF DOGCNT
CLRF OUTB
CLRF PORTB
CLRF PORTC
MOVLW 0x8
MOVWF BIT_CNT
MOVLW WIDTH
MOVWF DELAY
WAIT:
CLRWDT
;===========TIMER0============================
TMRO_P:
MOVF TMR0,W
BTFSS STATUS,Z
GOTO WAIT
; COMF PORTC,0x1
; GOTO COM_OVER
;================================================
;==================================================
MOVF PORTB,W
XORWF OUTB,0x0
ANDLW 0x02
BTFSS STATUS,Z
GOTO LG_CHANGE
MOVLW 0x02
MOVWF LG_FILTER
GOTO FILTER_LG_OVER
LG_CHANGE:
DECFSZ LG_FILTER,0x01
GOTO FILTER_LG_OVER
MOVLW 0x02
MOVWF LG_FILTER
BCF OUTB,LIGHT_IN
BTFSC PORTB,LIGHT_IN
BSF OUTB,LIGHT_IN
FILTER_LG_OVER:
; COMF PORTC,1
; GOTO WAIT
;-------------------------------------------------
BTFSS FLAG,WAIT_OVER
GOTO JUDGE_COME
BTFSS OUTB,LIGHT_IN
GOTO COM_OVER
BCF FLAG,WAIT_OVER
GOTO COM_OVER
JUDGE_COME:
BTFSS FLAG,START_COME ;judge start come
GOTO JUDGE_START
GOTO REC_DATA
;-------------------------------------------------
JUDGE_START:
BTFSC OUTB,LIGHT_IN ;judge start come
GOTO COM_OVER
BSF FLAG,START_COME ;ONCE A LOW PULSE COME,SET START COME
MOVLW WIDTH
MOVWF DELAY ;SET DELAY VALUE
MOVLW 0x2 ;AND RESET DOG
MOVWF DOGCNT
GOTO COM_OVER
;-------------------------------------------------
REC_DATA:
DECFSZ DELAY,0x1 ;AFTER DEALY A MIDDLE WIDTH ABOUT 40MS
GOTO COM_OVER
BTFSS PORTB,LIGHT_IN ;JUDGE LIGHT INPUT
GOTO IN0
GOTO IN1
IN0: BCF STATUS,C ;bit 0 to c
GOTO DEC_BIT_CNT
IN1: BSF STATUS,C ;bit 1 to c
DEC_BIT_CNT:
RLF COM_DATA,0x1 ;SAVE THIS BIT
BCF FLAG,START_COME ;ONE BIT RECIEVE OVER
BSF FLAG,WAIT_OVER
DECFSZ BIT_CNT,0x1
GOTO COM_OVER
MOVF COM_DATA,W
MOVWF OUT_VALUE ;FRESH OUT VALUE
COM_OVER:
;==========OUT_TIMER===============================
OUT_TIMER_P: ;each 100ms fresh output value
DECFSZ OUT_TIMER,0x1
GOTO OVER
MOVLW 0x0C ;200MS 0xE IS STABLE 45MS 0x0A IS STABLE
MOVWF OUT_TIMER
DO_10MS_OVER:
BCF PORTB,GAS
BTFSC OUT_VALUE,0x6
BSF PORTB,GAS
CLRF PORTC
BTFSC OUT_VALUE,0x0
BSF PORTC,LED1
BTFSC OUT_VALUE,0x1
BSF PORTC,LED2
BTFSC OUT_VALUE,0x2
BSF PORTC,LED3
BTFSC OUT_VALUE,0x3
BSF PORTC,LED4
BTFSC OUT_VALUE,0x4
BSF PORTC,LED5
BTFSC OUT_VALUE,0x5
BSF PORTC,PERL
LED_OVER:
;=================DOGCNT===================================
DOGCNT_P:
DECFSZ DOGCNT,0x1
GOTO OVER
MOVLW 0x2
MOVWF DOGCNT
MOVLW 0x8
MOVWF BIT_CNT
GOTO OVER
OVER:
MOVLW 0xE2
MOVWF TMR0
GOTO WAIT
;=========================================================================
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -