Пн окт 16, 2017 05:33:33
Пн окт 16, 2017 12:51:10
Пн окт 16, 2017 23:06:43
Вт окт 17, 2017 08:43:00
Вт окт 17, 2017 10:17:44
Вт окт 17, 2017 11:35:30
Вт окт 17, 2017 22:27:07
; контроллер - PIC16F628A
#include "p16f628a.inc"
__CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; конфигурация контроллера
; объявление регистров
DATA_OUT equ h'0010'
Reg_1 equ h'0011'
Reg_2 equ h'0012'
org 0000h
goto START ; вектор сброса
org 0004h
retfie ; вектор прерывания
;основная программа инициализации контроллера
START
clrw ; сброс W
bcf STATUS,RP0
bcf STATUS,RP1 ; переход в банк 0
movwf INTCON ; запрет всех прерываний
movwf PIR1; сброс всех флагов прерываний
bsf STATUS,RP0 ; переход в банк 1
movwf PIE1 ; запрет прерываний от периферии
bcf STATUS,RP0 ; переход в банк 0
; отключение неиспользуемых модулей
movlw 07h
movwf CMCON ; отключение модуля компараторов
clrf T2CON ; отключение таймера 2
clrf CCP1CON ; отключение ШИМ
bsf STATUS,RP0 ; банк 1
clrf VRCON ; отключение источника опорного напряжения
bcf OPTION_REG,T0CS ;обнуляем бит T0CS, что соответствует тактированию TMR0 от внутреннего сигнала
bcf STATUS,RP0 ;0-й банк
clrf T1CON; отключение таймера 1
; настройка модуля USART
bsf STATUS,RP0 ; банк 1
movlw b'00000110' ;
movwf TRISB
movlw b'00011000'
movwf SPBRG ; 24. скорость обмена - 10400
movlw b'10100100'
movwf TXSTA ; внутреннее тактирование, 8 разрядная передача, передача разрешена, асинхронный режим, высокоскоростной режим
bcf STATUS,RP0 ; банк 0
movlw b'10000000'
movwf RCSTA ; USART вкл, 8 разрядный прием, прием запрещен
; основной цикл
MAIN
call DELAY
;подпрограмма отправки запроса
movlw b'11111111' ;
movwf DATA_OUT ;
call TRANSFER ; передача 0x82
call DELAY
goto MAIN
DELAY
; Задержка 100 000 машинных циклов
; Длительность задержки 100 миллисекунд
; Частота задающего генератора 4 МГц
movlw .221
movwf Reg_1
movlw .130
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
; подпрограмма передачи данных по USART
TRANSFER
btfss PIR1,TXIF ; пуст ли буфер передатчика?
goto TRANSFER ; если нет, то повторная проверка
movf DATA_OUT,w ; иначе считывание значения и копирование в буфер передатчика
movwf TXREG
return
end
Ср окт 18, 2017 08:46:42
Ср окт 18, 2017 09:16:53
Ср окт 18, 2017 10:33:03
Ср окт 18, 2017 10:42:04
Ср окт 18, 2017 10:50:34
Ср окт 18, 2017 11:05:10
Ср окт 18, 2017 11:32:05
Ср окт 18, 2017 11:40:34
Ср окт 18, 2017 23:03:31
Чт окт 19, 2017 03:31:06
Чт окт 19, 2017 10:36:40
; контроллер - PIC16F628A
#include "p16f628a.inc"
__CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; конфигурация контроллера
; объявление регистров
DATA_OUT equ h'0010'
Reg_1 equ h'0011'
Reg_2 equ h'0012'
org 0000h
goto START ; вектор сброса
org 0004h
retfie ; вектор прерывания
;основная программа инициализации контроллера
START
clrw ; сброс W
bcf STATUS,RP0
bcf STATUS,RP1 ; переход в банк 0
movwf INTCON ; запрет всех прерываний
movwf PIR1; сброс всех флагов прерываний
bsf STATUS,RP0 ; переход в банк 1
movwf PIE1 ; запрет прерываний от периферии
bcf STATUS,RP0 ; переход в банк 0
; отключение неиспользуемых модулей
movlw 07h
movwf CMCON ; отключение модуля компараторов
clrf T2CON ; отключение таймера 2
clrf CCP1CON ; отключение ШИМ
bsf STATUS,RP0 ; банк 1
clrf VRCON ; отключение источника опорного напряжения
bcf OPTION_REG,T0CS ;обнуляем бит T0CS, что соответствует тактированию TMR0 от внутреннего сигнала
bcf STATUS,RP0 ;0-й банк
clrf T1CON; отключение таймера 1
; настройка модуля USART
bsf STATUS,RP0 ; банк 1
movlw b'00000110' ;
movwf TRISB
movlw b'00011000'
movwf SPBRG ; 24. скорость обмена - 10400
movlw b'10000111'
movwf TXSTA ; внутреннее тактирование, 8 разрядная передача, !передача разрешена, асинхронный режим, высокоскоростной режим
bcf STATUS,RP0 ; банк 0
movlw b'11111111'
movwf PORTB
movlw b'10111000'
movwf RCSTA ; USART вкл, 8 разрядный прием, прием запрещен
bsf STATUS,RP0 ; банк 1
bsf OPTION_REG,NOT_RBPU ; вкл. подтяжку
bsf TXSTA,TXEN ; вкл. передачи
bcf STATUS,RP0 ; банк 0
; основной цикл
MAIN
call DELAY
call DELAY
call DELAY
;подпрограмма отправки запроса
movlw b'10000010' ;
movwf DATA_OUT ;
call TRANSFER ; передача 0x82
call DELAY
goto MAIN
DELAY
; Задержка 100 000 машинных циклов
; Длительность задержки 100 миллисекунд
; Частота задающего генератора 4 МГц
movlw .221
movwf Reg_1
movlw .130
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
; подпрограмма передачи данных по USART
TRANSFER
btfss PIR1,TXIF ; пуст ли буфер передатчика?
goto TRANSFER ; если нет, то повторная проверка
call DELAY
movf DATA_OUT,w ; иначе считывание значения и копирование в буфер передатчика
movwf TXREG
return
end
Чт окт 19, 2017 11:10:47
Чт окт 19, 2017 12:30:07