Автор работы: Пользователь скрыл имя, 06 Июня 2013 в 12:40, курсовая работа
В курсовом проекте необходимо разработать систему дополнительной обработки данных (СДОД), которая эмулирует функционирование потоковых SIMD-расширений (SSE – Striming SIMD Extensions) архитектуры IA-32 методами микроконтроллера (МК) семейства PIC18XX2.
СДОД должна включать:
микроконтроллер указанного типа;
внешняю память, дополняющаю внутреннюю память МК до 256 Кб, имея в своем распоряжении предложенные микросхемы памяти, которые сотавляют:
1. Выбор варианта задания.
2. Схема функциональная.
3. Анализ задания и описание алгоритма функции.
4. Описание работы устройства.
5. Описание программы
; SQRES3:SQRES0 = ARG1H:ARG1L ^2
Sq16 movf ARG1L, W, a
mulwf ARG1L ; ARG1L * ARG2L ->
; PRODH:PRODL
movff PRODH, SQRES1 ;
movff PRODL, SQRES0 ;
movf ARG1H, W, a
mulwf ARG1H ; ARG1H * ARG2H ->
; PRODH:PRODL
movff PRODH, SQRES3 ;
movff PRODL, SQRES2 ;
movf ARG1L, W, a
mulwf ARG1H ; ARG1L * ARG2H ->
; PRODH:PRODL
movf PRODL, W, a ;
addwf SQRES1, F, a ; суммировать перекрестные
movf PRODH, W, a ; значения
addwfc SQRES2, F, a ;
clrf WREG, a ;
addwfc SQRES3, F, a ;
movf ARG1H, W, a ;
mulwf ARG1L ; ARG1H * ARG2L ->
; PRODH:PRODL
movf PRODL, W, a ;
addwf SQRES1, F, a ; суммировать перекрестные
movf PRODH, W, a ; значения
addwfc SQRES2, F, a ;
clrf WREG, W ;
addwfc SQRES3, F, a ;
return
GLOBAL Sq16
; ******************************
; ************* Инициализация PSP **************************
; Init_PSP
Init_PSP bsf STATUS, RP0 ; переключить 1-й банк
clrf TRISB ; A8-A15 как выход
clrf TRISD ; AD0-AD7 как выход
movlw 0xF8
andwf TRISE, F ; выход
bcf STATUS, RP0 ; переключить 0-й банк
clrf ADHIGH ; А8-А15®”0”
clrf ADLOW ; АD0-АD7®”0”
movlw 3 ; ALE=0, RD=1, WR=1
movwf PORTE
return
GLOBAL Init_PSP
; ******************************
; ****************** Чтение из ППЗУ **************************
; ReadPSP
ReadPSP
movf ADLOW, W ; сохранить младший адресс
movwf ADLOW_IMAGE ;
bsf PORTE, ALE ; ALE на 20 МГц
bсf PORTE, ALE
bsf STATUS, RP0
movlw 0xFF
mowf TRISD ; порт D - вход
bcf STATUS, RP0
bcf PORTE, RD ; сбросить READ в низкий уровень
movf ADLOW, W ; переместить данные в W
bsf PORTE, RD ; уст. READ в высокий уровень
bsf STATUS, RP0
clrf TRISD ; порт D - выход
bcf STATUS, RP0
movwf W_IMAGE ; сохранить данные
movf ADLOW_IMAGE ; восстановить младший адресс
return
GLOBAL ExtMem
; ******************************
; ************* Инициализация MSSP **************************
Init_I2C
banksel SSPADD ; выбрать банк
movlw ClockValue ; выбор частоты передачи
movwf SSPADD ; инициализировать частоту I2C
bcf SSPSTAT, 6 ; выбрать уровень входов I2C
bcf SSPSTAT, 7 ;
movlw b'00011000' ;
iorwf TRISC, f ; SDA и SCL - входы
bcf STATUS,RP0 ; выбрать банк
movlw b'00111000' ;
movwf SSPCON ; Master mode, режим SSP включен
return
GLOBAL Init_I2C
; ******************************
; ************** Запись в
РПЗУ ******************************
; WriteI2C
WriteI2C
banksel SSPSTAT
btfsc SSPSTAT, BF ; буфер полный?
goto WriteI2C ; если да, то продолжаем ждать
banksel SSPCON ; нет, идем дальше.
DoI2CWrite
bcf SSPCON, WCOL ; очистить флаг WCOL
movwf SSPBUF ; записать байт в WREG
btfsc SSPCON, WCOL ; был ли конфликт записи?
goto DoI2CWrite
bsf SSPCON, CKP ; сбросить счетчик
return
GLOBAL WriteI2C
;*****************************
end
Информация о работе Разработка системы дополнительной обработки данных