Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Курсовая по МПС |
Философия, технологии, алгоритмы! |
|
Опции темы |
01.05.2012, 21:53 | #1 |
Форумец
Сообщений: 7
Регистрация: 25.01.2011
Не в сети |
Курсовая по МПС
Доброго времени суток.
Требуется сделать курсовую по микропроцессорам. ПО MPlab. Можно реализовать на С или Assembler. Вот само задание: Разработать систему сигнализации. К порту B подключены выходы датчиков сигнализации. 1 означает срабатывание датчиков, 0 нормальное состояние. В цикле опрашивать порт В и в случае срабатывания передавать в последовательный порт или передатчик USART. С предложениями в ЛС |
01.05.2012, 22:02 | #2 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
У меня в МИКТе очень похожая была. Тоже была на С, но т.к. я его не знаю писал на асемблере. Какой контроллер?
Если есть возможность поменять тему то могу отдать свой. Мало ли совпадут. У меня была тема что то типо: "раз в две минуты опрашивать порт А, если на нем число больше чем заданная константа, то выдать выдать на порт В единицу". Контроллер p16f73. |
01.05.2012, 22:14 | #4 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
silly, а какая разница? Все равно же программа потом все на ассемблер переводит. На Си правда легче все говорили, но т.к. я его практически не знал, то писал на своем.
У меня прилично кода получилось, а на С говорили что 20 строк. А тут наверное в этой задаче все 10. Хотя я хз. Вот сейчас откапал если кому интересно. Сорри что флуд развожу. include p16f73.inc mlBait equ 0x45 ; Младший байт для хранения числа прерываний (константы) stBait equ 0x46 ; Старший байт для хранения числа прерываний (константы) mlRabBait equ 0x47 ; Младший рабочий байт для подсчета количества прерываний stRabBait equ 0x48 ; Старший рабочий байт для подсчета количества прерываний Konstanta equ 0x44 ; Константа для сравнения с результатом преобразования АЦП flag equ 0x52 org 0x00 goto start org 0x04 bcf flag,0 BTFSC INTCON, T0IF ; Проверяем флаг прерывания от таймера call PrerivanieTaymera ; Если он установлен, то Запускаем процедуру обработки прерывания от таймера BTFSC PIR1, ADIF ; Проверяем флаг прерывания от АЦП call PrerivanieACP ; Если он установлен, то Запускаем процедуру обработки прерывания от АЦП BCF INTCON,T0IF ; Сбрасываем флаг прерывания от таймера BCF PIR1, ADIF ; Сбрасываем флаг прерывания от АЦП retfie ZapuskACP bsf ADCON0,2 ; Запускаем АЦП CLRF mlRabBait CLRF stRabBait RETURN PrerivanieACP MOVF ADRES,0 ; Пересылаем констану рабочий байт в рабочий регистр (Для сравнения) SUBWF Konstanta ; Вычитаю из регистра результата работы АЦП (ADRES) рабочий регистр, хранящий константу BTFSC STATUS, C ; Проверяем результат вычитания bcf PORTB,1 ; Если бит С равен 1 (т.е. результат преобразования АЦП меньше константы ; (отрицательный результат вычитания))тогда сбрасываем RB1 BTFSS STATUS, C ; Проверяем результат вычитания bsf PORTB,1 ; Если бит С равен 0 (т.е. результат преобразования АЦП больше константы ; (положительный результат вычитания))тогда устанавливаем RB1 CLRF ADRES ; Очищаем результат работы АЦП RETURN PrerivanieTaymera: BCF STATUS,Z MOVLW .1 ; ADDWF mlRabBait,1; Увеличиваем младший рабочий байт (INCF mlRabBait) BTFSC STATUS,C ; Анализирум бит C INCF stRabBait ; Если он = 1, то увеличиваем старший рабочий байт на 1 MOVF stRabBait,0 ; Пересылаем старший рабочий байт в рабочий регистр SUBWF stBait,0 ; Вычитаю из константы (stBait) рабочий регистр, хранящий количество прываний BTFSS STATUS, Z ; Проверяем результат вычитания GOTO Dalee ; Если бит Z равен 0 (т.е. вычитание не равно 0) тогда в конец процедуры BCF STATUS,Z MOVF mlRabBait,0 ; Пересылаем младший рабочий байт в рабочий регистр SUBWF mlBait,0 ; Вычитаю из константы (mlBait) рабочий регистр, хранящий количество прываний BTFSC STATUS, Z ; Проверяем результат вычитания bsf flag,0 ; Если бит Z равен 1 (т.е. вычитание равно 0) тогда устанавливаем флаг вызова запуска АЦП Dalee: BCF STATUS,C ; Очищаем биты C и Z регистра STATUS (BCF STATUS,Z) RETURN start: CLRF mlBait CLRF stBait CLRF mlRabBait CLRF stRabBait CLRF Konstanta CLRF flag MOVLW .10 ; MOVWF Konstanta; Задаем константу MOVLW .19 ; (+) Записали число 5095(прерываний от таймера) для осчета двух минут MOVWF stBait; MOVLW .232 ; MOVWF mlBait-) BSF STATUS, RP0 ; (1)(2) Устанавливаем банк 1 BCF TRISB,1; Устанавливаем RB1 на выход MOVLW .00 ; MOVWF ADCON1; Устанавливаем RA1 как аналоговый вход MOVLW .255 ; MOVWF TRISA ; Устанавливаем portА на Ввод BCF STATUS, RP0 ; (3) Устанавливаем банк 0 MOVLW .9 ; 00001001 MOVWF ADCON0; Выбор входного канала RA1, Включение АЦП, Выбор источника тактовых импульсов- 00 = Fosc/2(Fosc-частота одной фазы машинного цикла, совпадающая с частотой кварца), Выбор входного канала RA1, Включение АЦП BSF STATUS, RP0 ; (3) Устанавливаем банк 1 BSF PIE1, ADIE 4) Разрешаем прерывания от АЦП BCF STATUS, RP0 ; (3) Устанавливаем банк 0 BCF PIR1, ADIF ; Сбрасываем флаг прерываний от АЦП BSF INTCON, PEIE ; Разрешаем переферийные прерывания MOVLW .0 +Таймер) MOVWF TMR0; Запустли таймер BSF STATUS, RP0 ; Устанавливаем банк 1 MOVLW .7 MOVWF OPTION_REG; Записали в предделитель 7 (предделитель = 256) BSF INTCON,T0IE ; Разрешаем прерывания от таймера(-Таймер) BSF INTCON, GIE ; Разрешаем прерывания в системе BCF STATUS, RP0 ; Устанавливаем банк 0 loop: BTFSC flag,0 call ZapuskACP ; Запускаем АЦП goto loop end |
01.05.2012, 22:23 | #6 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
silly, как видите я его вообще не знаю, на данный момент. Последний раз сталкивался года два назад.
Помоги человеку с курсовой, на си это же по моему легче простого. Сравнить и выдать на выход. На асемблере могу написать, но это нужно немножко вспомнить.. |
01.05.2012, 22:28 | #8 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
Лебедев?
http://rghost.ru/37866374 Само задание не помню. Если пригодится пользуйтесь. Так же могу помочь с остальными курсяками по ООП, БД, схемотехнике и пр. Но это уже другое)) |
01.05.2012, 22:47 | #10 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
Лилии, в каких именно? У меня сейчас особо времени нет заниматься. ООП и БД нужно много времени уделять т.к. их нужно индивидуально делать. Схемотехника есть мой курсовой сданный на отлично, там исправить только часть где идет расчет схемы, а сама схема красиво разведена, при желании могу переразвести. СПО по моему еще в этом периоде, там простая и муторная реализация.
Что именно то нужно? Опять я в тему влез, а делать ни хочу)). По МПС сами разберетесь? Есть возможность тему поменять? |
01.05.2012, 22:55 | #12 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
Лилии, Что за задание по ООП? И какой вариант по схомотехнике?
Могу сделать за определенную плату ООП и переделать свою схемотехнику. Или дать как есть, но вряд ли он ее с прошлого года забыл)). Кондусов на 3ки какие угодно в конце принимает, а 4ки и 5ки нужно попотеть. |
01.05.2012, 23:09 | #15 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
Лилии, дайте почту и я тебе скину схемотехнику. Спасибо будет достаточно. При сдаче будешь мило улыбаться и все прокатит. Только там в начале нужно будет пересчитать как в варианте.
Про ООП у меня сейчас времени особо нет, но если больше возможности нет, то могу взятся небескорыстно конечно. Ибо на него нужно времени много. И наш любимый преподаватель любит просить что бы что нибуть переделали в курсовой что бы подтвердить что делали именно вы. |
01.05.2012, 23:13 | #16 |
Форумец
Сообщений: 7
Регистрация: 25.01.2011
Не в сети |
posq, [email protected]
С Юшининым и правда хочеться самой разобраться) Спасибо больше за помощь!) |
02.05.2012, 23:23 | #18 |
Форумец
Сообщений: 39,863
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
|
02.05.2012, 23:45 | #19 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
|
03.05.2012, 00:29 | #21 |
Форумец
Сообщений: 655
Регистрация: 23.10.2010
Не в сети |
silly, ну я же знаю асемблер на уровне института, а с Си сталкиваться не приходилось, если придется думаю трудности особой не составит разобраться. Там же только основные команды записи и чтения и стандартные циклы и пр.
|