2009 졸작 저장용, (마이크로 프로세스 어셈블리어)

develop, assembly
written byzuhern1zuhern

in

2019. 02. 21


옛날옛적 졸작 코드

자동차 공기 순환 시스템

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