G
Guest
Guest
인사말들.현재 프로젝트 PIC는 어디서 나는 오전에 PIC 프로그래밍을 사용하여 작업을 오전과 16x2 HD44100H 액정, 어셈블러에서 프로그래밍 인터페이스와 함께.내가 입력 비트로 한 포르 한에있는 비트를 사용 해왔다.각 시간의 입력 비트 그것은 LCD 화면에 메시지를 표시하려면 트리거 PIC는 낮습니다.거기에 핀 RA3는 얼마나 많은 시간을 카운트하고 각 방아쇠가 낮은 카운터의 다른 메시지가 표시됩니다.
거기에만 4 메시지 및 각 시간은 방아쇠를 카운트 4에 도달하면, 그것을 0으로 재설정합니다.
이 문제 : 후 프로그래밍, 내가 4 메시지 단지 방아쇠를 핀 않고 다른 후 인쇄에 PIC에 스위치를 누를있다.둘째, 코드를 정제가 있지만 일하고 싶어하지 않습니다.도움이 필요 해요.
내가 어떤 제안을 환영하고있는 코드가 붙어있다.
================================================== ===/ / 제목 : 디자인 프로젝트 3 전차 프로그램
/ / 저자 : Nikkie & 에녹
/ /
목사
& 발매일 : 2009년 3월 23일
LCD_E PORTA, RA0 / / LCD는 사용을 통제 라인을 정의
#LCD_RW PORTA, RA1
정의 # / /
LCD는 읽기 / 쓰기 제어 라인
/ / LCD는 등록
- 선택 컨트롤 라인 LCD_RS PORTA, RA2 정의 #
BUSYFLAG PORTB,
7 정의
# / / LCD는 '바쁜'깃발 출력
INPUTBIT PORTA, RA3 / / 입력 라인을 정의
#
카운터 EQU이 0C
CNT1 EQU 0D 관련 / / 카운터 변수는 지연의 실행에 사용
CNT2 EQU 0E가 발생한다
CNT3 EQU 0F
LCD_TEMP EQU 10
//************************************************ **************
INIT 이전 : BSF 상태, RP0 / / 메모리 뱅크 1
MOVLW 0x00 / / 설정 포트 B와 출력으로
MOVWF TRISB / / 출력의 LCD 데이터 라인
MOVLW 0x08 / / 포트 A의 비트 3 입력 비트 및
LCD RS, RW를, 전자를 0-2로 출력
MOVWF TRISA
BCF 상태, RP0 / / 메모리
뱅크 0으로 전환
CLRF PORTB / / 지우기의 출력 포트
CLRF PORTA / / 지우기 입력 포트
놉 / / 지우기 모든 변수
CLRF 카운터
CLRF LCD_TEMP
CLRF CNT1
CLRF CNT2
CLRF CNT3
외침 LCD_INIT / / LCD 디스플레이 Initialising
외침 LCDCLR
//************************************************ **************
스타트 : 전화 확인
MOVF 카운터, 승 입력 코드를 운행하는 경우에는 1 /
/ 확인
XORLW 0x01
BTFSC 상태,
지외침 DISPST1MOVF 카운터, 승
스테이션 2의 경우에는 입력 코드 XORLW 0x02 /
/ 확인
BTFSC 상태,
지외침 DISPST2
MOVF 카운터, 승 입력 코드 스테이션 3의 경우는
/ / 확인
XORLW 0x03
BTFSC 상태,
지외침 DISPST3MOVF 카운터, 승 입력 코드를 운행하는 경우에는 4 /
/ 확인
XORLW 0x04
BTFSC 상태,
지외침 DISPST4
GOTO 스타트
//************************************************ **************
/ / 함수를 표시하는 액정
DISPST4 : 외침 기다
MOVLW 0x50 / / 전시는 'P'
외침 WR_DATA
외침 기다
MOVLW 0x61 / / 표시 'A'를
외침 WR_DATA
외침 기다
MOVLW 0x72 / / 표시 '연구'
외침 WR_DATA
외침 기다
MOVLW 0x6F / / 표시 'O'대신
외침 WR_DATA
외침 기다
MOVLW 0x77 / / 표시 '승'
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
DISPST3 : 외침 기다
MOVLW 0x45 / / 표시 'E'의
외침 WR_DATA
외침 기다
MOVLW 0x7C / / 표시 '패'
외침 WR_DATA
외침 기다
MOVLW 0x73 / / 표시 'S'
외침 WR_DATA
외침 기다
MOVLW 0x69 / / 표시 '나'
외침 WR_DATA
외침 기다
MOVLW 0x65 / / 표시 'E'의
외침 WR_DATA
외침 기다
MOVLW 0x73 / / 표시 'S'
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
DISPST2 : 외침 기다
MOVLW 0x56 / / 표시 '브이'
외침 WR_DATA
외침 기다MOVLW 0x61 //Displaying 'A' 외침 WR_DATA
외침 기다
MOVLW 0x73 / / 표시 'S'
외침 WR_DATA
외침 기다
MOVLW 0x63 / / Displaying'C '
외침 WR_DATA
외침 기다
MOVLW 0x6F / / Displaying'O '
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
DISPST1 : 외침 기다
MOVLW 0x4D / / Displaying'M '
외침 WR_DATA
외침 기다
MOVLW 0x75 / / Displaying'U '
외침 WR_DATA
외침 기다
MOVLW 0x74 / / Displaying'T '
외침 WR_DATA
외침 기다
MOVLW 0x75 / / Displaying'U '
외침 WR_DATA
외침 기다
MOVLW 0x61 / / Displaying'A '
외침 WR_DATA
외침 기다
MOVLW 0x7C / / Displaying'L '
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
/ / 함수는 데이터를 받아들이지는 LCD 세트에 대한 준비를
WR_DATA : MOVWF LCD_TEMP / / 문자 보내려고 승에있다
액정에 대한 외침 기다려 / / 잠깐 준비를
BCF LCD_RW / / LCD는 읽기 모드에서 설정
BSF LCD_RS / / 설정의 LCD 데이터에 모드
BSF LCD_E / / LCD는 활성화 라인 높음
MOVF LCD_TEMP, 승
MOVWF PORTB / 액정에 데이터를 전송 /
BCF LCD_E / / LCD는 활성화 라인 하한가
반환//************************************************ **************
확인 : BTFSC INPUTBIT / / 모니터링 입력 버튼을 누를 경우
GOTO 확인
외침 DEL20MS
BTFSC INPUTBIT
GOTO 확인
INCF 카운터로, F / / 증가 역 카운터 변수
MOVLW 0x00
MOVF 카운터, 승 / / 카운터 변수의 값을 이동
카운터의
경우 가치는 5와 같다 XORLW 0x05 / / 확인
만약 카운터의 값을 5 BTFSC 상태,
지 / / Z부터 깃발은 0이 될 것입니다
외침 내리기 / / 카운터의 값을 줄입니다
반환
아래쪽 : CLRF 카운터 / / 다시 1부터 방송국 세고
반환
//************************************************ **************
/ / 20짜리 - 초 지연
DEL20MS : MOVLW 0x1A
MOVWF CNT2
LOOP1 : MOVLW를 0xFF
MOVWF CNT1
LOOP2 : DECFSZ CNT1로, F
GOTO LOOP2
DECFSZ CNT2로, F
GOTO LOOP1
반환
//************************************************ **************
/ / LCD는 Initialising 함수
LCD_INIT : 외침 DEL20MS
MOVLW 0x38
MOVWF PORTB
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
MOVLW 0x0F
MOVWF PORTB
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
MOVLW 0x01
MOVWF PORTB
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
MOVLW 0x06
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
반환
//************************************************ **************
/ / 모니터링을위한 기능 플래그를 설정하는 경우에는 액정 바쁘다
대기 : BTFSC BUSYFLAG
GOTO 기다
외침 DEL20MS
BTFSC BUSYFLAG
GOTO 기다
반환
//************************************************ **************
/ / 2 초정도 지연
DEL2S : MOVLW 0x0A
MOVWF CNT3
PART1 : MOVLW를 0xFF
MOVWF CNT2
PART1A : MOVLW를 0xFF
MOVWF CNT1
PART1B : DECFSZ CNT1로, F
GOTO PART1B
놉
PART2 : DECFSZ CNT2로, F
GOTO PART1A
DECFSZ CNT3로, F
GOTO PART1
반환
//************************************************ **************
/ / 한 기능은 디스플레이을 취소합니다
LCDCLR : MOVLW 0x01
외침 WR_DATA
반환
//************************************************ **************
ORG를 0x2007 / / 구성 워드
DW 0x3FF1
최종
수퍼에 의해 조장 마지막 - EZEE 2009년 5월 16일 21:54;에서 편집한 1 시간 총
거기에만 4 메시지 및 각 시간은 방아쇠를 카운트 4에 도달하면, 그것을 0으로 재설정합니다.
이 문제 : 후 프로그래밍, 내가 4 메시지 단지 방아쇠를 핀 않고 다른 후 인쇄에 PIC에 스위치를 누를있다.둘째, 코드를 정제가 있지만 일하고 싶어하지 않습니다.도움이 필요 해요.
내가 어떤 제안을 환영하고있는 코드가 붙어있다.
================================================== ===/ / 제목 : 디자인 프로젝트 3 전차 프로그램
/ / 저자 : Nikkie & 에녹
/ /
목사
& 발매일 : 2009년 3월 23일
LCD_E PORTA, RA0 / / LCD는 사용을 통제 라인을 정의
#LCD_RW PORTA, RA1
정의 # / /
LCD는 읽기 / 쓰기 제어 라인
/ / LCD는 등록
- 선택 컨트롤 라인 LCD_RS PORTA, RA2 정의 #
BUSYFLAG PORTB,
7 정의
# / / LCD는 '바쁜'깃발 출력
INPUTBIT PORTA, RA3 / / 입력 라인을 정의
#
카운터 EQU이 0C
CNT1 EQU 0D 관련 / / 카운터 변수는 지연의 실행에 사용
CNT2 EQU 0E가 발생한다
CNT3 EQU 0F
LCD_TEMP EQU 10
//************************************************ **************
INIT 이전 : BSF 상태, RP0 / / 메모리 뱅크 1
MOVLW 0x00 / / 설정 포트 B와 출력으로
MOVWF TRISB / / 출력의 LCD 데이터 라인
MOVLW 0x08 / / 포트 A의 비트 3 입력 비트 및
LCD RS, RW를, 전자를 0-2로 출력
MOVWF TRISA
BCF 상태, RP0 / / 메모리
뱅크 0으로 전환
CLRF PORTB / / 지우기의 출력 포트
CLRF PORTA / / 지우기 입력 포트
놉 / / 지우기 모든 변수
CLRF 카운터
CLRF LCD_TEMP
CLRF CNT1
CLRF CNT2
CLRF CNT3
외침 LCD_INIT / / LCD 디스플레이 Initialising
외침 LCDCLR
//************************************************ **************
스타트 : 전화 확인
MOVF 카운터, 승 입력 코드를 운행하는 경우에는 1 /
/ 확인
XORLW 0x01
BTFSC 상태,
지외침 DISPST1MOVF 카운터, 승
스테이션 2의 경우에는 입력 코드 XORLW 0x02 /
/ 확인
BTFSC 상태,
지외침 DISPST2
MOVF 카운터, 승 입력 코드 스테이션 3의 경우는
/ / 확인
XORLW 0x03
BTFSC 상태,
지외침 DISPST3MOVF 카운터, 승 입력 코드를 운행하는 경우에는 4 /
/ 확인
XORLW 0x04
BTFSC 상태,
지외침 DISPST4
GOTO 스타트
//************************************************ **************
/ / 함수를 표시하는 액정
DISPST4 : 외침 기다
MOVLW 0x50 / / 전시는 'P'
외침 WR_DATA
외침 기다
MOVLW 0x61 / / 표시 'A'를
외침 WR_DATA
외침 기다
MOVLW 0x72 / / 표시 '연구'
외침 WR_DATA
외침 기다
MOVLW 0x6F / / 표시 'O'대신
외침 WR_DATA
외침 기다
MOVLW 0x77 / / 표시 '승'
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
DISPST3 : 외침 기다
MOVLW 0x45 / / 표시 'E'의
외침 WR_DATA
외침 기다
MOVLW 0x7C / / 표시 '패'
외침 WR_DATA
외침 기다
MOVLW 0x73 / / 표시 'S'
외침 WR_DATA
외침 기다
MOVLW 0x69 / / 표시 '나'
외침 WR_DATA
외침 기다
MOVLW 0x65 / / 표시 'E'의
외침 WR_DATA
외침 기다
MOVLW 0x73 / / 표시 'S'
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
DISPST2 : 외침 기다
MOVLW 0x56 / / 표시 '브이'
외침 WR_DATA
외침 기다MOVLW 0x61 //Displaying 'A' 외침 WR_DATA
외침 기다
MOVLW 0x73 / / 표시 'S'
외침 WR_DATA
외침 기다
MOVLW 0x63 / / Displaying'C '
외침 WR_DATA
외침 기다
MOVLW 0x6F / / Displaying'O '
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
DISPST1 : 외침 기다
MOVLW 0x4D / / Displaying'M '
외침 WR_DATA
외침 기다
MOVLW 0x75 / / Displaying'U '
외침 WR_DATA
외침 기다
MOVLW 0x74 / / Displaying'T '
외침 WR_DATA
외침 기다
MOVLW 0x75 / / Displaying'U '
외침 WR_DATA
외침 기다
MOVLW 0x61 / / Displaying'A '
외침 WR_DATA
외침 기다
MOVLW 0x7C / / Displaying'L '
외침 WR_DATA
외침 DEL2S
외침 LCDCLR
외침 DEL20MS
반환
//************************************************ **************
/ / 함수는 데이터를 받아들이지는 LCD 세트에 대한 준비를
WR_DATA : MOVWF LCD_TEMP / / 문자 보내려고 승에있다
액정에 대한 외침 기다려 / / 잠깐 준비를
BCF LCD_RW / / LCD는 읽기 모드에서 설정
BSF LCD_RS / / 설정의 LCD 데이터에 모드
BSF LCD_E / / LCD는 활성화 라인 높음
MOVF LCD_TEMP, 승
MOVWF PORTB / 액정에 데이터를 전송 /
BCF LCD_E / / LCD는 활성화 라인 하한가
반환//************************************************ **************
확인 : BTFSC INPUTBIT / / 모니터링 입력 버튼을 누를 경우
GOTO 확인
외침 DEL20MS
BTFSC INPUTBIT
GOTO 확인
INCF 카운터로, F / / 증가 역 카운터 변수
MOVLW 0x00
MOVF 카운터, 승 / / 카운터 변수의 값을 이동
카운터의
경우 가치는 5와 같다 XORLW 0x05 / / 확인
만약 카운터의 값을 5 BTFSC 상태,
지 / / Z부터 깃발은 0이 될 것입니다
외침 내리기 / / 카운터의 값을 줄입니다
반환
아래쪽 : CLRF 카운터 / / 다시 1부터 방송국 세고
반환
//************************************************ **************
/ / 20짜리 - 초 지연
DEL20MS : MOVLW 0x1A
MOVWF CNT2
LOOP1 : MOVLW를 0xFF
MOVWF CNT1
LOOP2 : DECFSZ CNT1로, F
GOTO LOOP2
DECFSZ CNT2로, F
GOTO LOOP1
반환
//************************************************ **************
/ / LCD는 Initialising 함수
LCD_INIT : 외침 DEL20MS
MOVLW 0x38
MOVWF PORTB
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
MOVLW 0x0F
MOVWF PORTB
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
MOVLW 0x01
MOVWF PORTB
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
MOVLW 0x06
BCF LCD_RS
BCF LCD_RW
BSF LCD_E
BCF LCD_E
외침 DEL20MS
외침 기다
반환
//************************************************ **************
/ / 모니터링을위한 기능 플래그를 설정하는 경우에는 액정 바쁘다
대기 : BTFSC BUSYFLAG
GOTO 기다
외침 DEL20MS
BTFSC BUSYFLAG
GOTO 기다
반환
//************************************************ **************
/ / 2 초정도 지연
DEL2S : MOVLW 0x0A
MOVWF CNT3
PART1 : MOVLW를 0xFF
MOVWF CNT2
PART1A : MOVLW를 0xFF
MOVWF CNT1
PART1B : DECFSZ CNT1로, F
GOTO PART1B
놉
PART2 : DECFSZ CNT2로, F
GOTO PART1A
DECFSZ CNT3로, F
GOTO PART1
반환
//************************************************ **************
/ / 한 기능은 디스플레이을 취소합니다
LCDCLR : MOVLW 0x01
외침 WR_DATA
반환
//************************************************ **************
ORG를 0x2007 / / 구성 워드
DW 0x3FF1
최종
수퍼에 의해 조장 마지막 - EZEE 2009년 5월 16일 21:54;에서 편집한 1 시간 총