옛날옛적 졸작 코드
자동차 공기 순환 시스템
42도 이상인 경우 자동차 내 모터를 돌림 전력은 태양광 or 전지
LIST P=16F84,F=INHX8M
INCLUDE<P16F84.INC>
INCLUDE<RS232-H.INC>
NUMBER EQU 0CH
TEMP EQU 0DH
D_CNT EQU 0EH
D_CNT1 EQU 0FH
LSD EQU 10H ; 1의 자리
MSD EQU 11H ; 10의 자리
MMSD EQU 12H ; 100의 자리
#DEFINE _BANK STATUS,RP0 ; BANK지정
#DEFINE ADC_CS PORTA,4 ; /CD핀
#DEFINE ADC_RD PORTA,3 ; RD/WR핀
#DEFINE TX PORTA,1
#DEFINE RX PORTA,0
ORG 0 ; 0번째 줄
START GOTO MAIN ; MAIN 으로 고
ORG 4 ; 4번째 줄
MAIN BSF _BANK ; BANK 1
MOVLW B'00000111'
MOVWF TRISA ; 0,1,2핀만 입력
MOVLW B'11111111'
MOVWF TRISB ; 전체 입력
MOVLW B'11111111' ; WDT 설정 , PRE=128
MOVWF OPTION_REG
BCF _BANK ; BANK 0
CLRF NUMBER ; 넘버초기화
MOVLW B'00011000' ; ADC 변환시작,선택해제
MOVWF PORTA
CLRF PORTB ; 모터 정지
GOTO GET_ADC
L_WDT CLRWDT ; WDT 사용
SLEEP ; 2304 DELAY
CLRF PORTB ; 모터 정지
; B 포트 입력********************************************************************
GET_ADC MOVLW B'00101010' ; 초기값 42도로 설정
MOVWF TEMP
BSF _BANK ; BANK 1
MOVLW B'11111111'
MOVWF TRISB ; 전체 입력
BCF _BANK ; BANK 0
BCF ADC_CS ; ADC 선택
BCF ADC_RD ; ACD 데이터 출력
MOVF PORTB,W ; ..401쪽.,,맞는것같다
MOVWF NUMBER ; 온도값을 NUMBER로
BSF ADC_RD ; ADC 다음변환 시작
BSF ADC_CS ; ADC 선택해제
CALL GET10
; 현재온도와 기준값 비교
BCF STATUS,C ; 캐리비트 0
MOVF NUMBER,W ; NUMBER를 W로
SUBWF TEMP,W ; TEMP - W(NUMBER) TEMP>W면 CARRY 비트가1
BTFSC STATUS,C ; 캐리비트 가 0이면 스킵(모터구동) 1이면 슬립으로
GOTO L_WDT
GOTO MOTER
; 2진수를 10진수로 변환 ****************************************************
GET10 MOVF NUMBER,W
CALL BIN2BCD
; A 포트 모두 출력***********************************************************
; 컴퓨터에 디스플레이 함
DISP BSF _BANK
MOVLW 01H ; porta,0 in
MOVWF TRISA ; A 포트 모두 출력
BCF