Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.179.119] |
|
Сообщ.
#1
,
|
|
|
Всем привет. Помогите досделать програмку.
Задание звучит как-то так - Обеспечить выдачу на светодиоды VD1, VD2, VD3, VD4 младшей тетрады логической суммы дополнительного кода нажатых кнопок S1, S2, S3 и S4 и операнда 09h. Модуль ввода/вывода подключен к порту B и представлен на рис.2. (Рисунок в приложении) Прикреплённый файлpic_modul.JPG (23,96 Кбайт, скачиваний: 575) Вот собственно что я написал (вообщем-то основу только) LIST p=16c84 INCLUDE "reg16c84.equ" list l=ON ORG 00h BSF STATUS, 5 ; Установить активным банк памяти 1 MOVLW 0Fh ; RB0-RB3 на ввод, RB4-RB7 на вывод MOVWF TRISB ; Запись в управляющий регистр GOTO BEGIN: ORG 04h GOTO BEGIN: ORG 05h BEGIN: BCF STATUS, 5 ; Установить активным банк памяти 0 MOVLW B'10001000' ; Разреш. прерыв. общее и от порта B MOVWF INTCON ;тут нужно как-то переводить кнопки в дополнительный код если я правильно думаю MOVLW 09h ; Помещаем в аккумулятор константу IORWF PortB, 0 ; Сумма кода кнопок и 09h MOVWF 0Ch ; Из аккумулятора в регистр ;сдвинуть надо на 4 позиции влево чтобы старшая тетрада стала младшей и совпала с диодами как-то так наверное - RLF PORTB,4 ;сдвинуть содержимое влево ;ну и выводим всё это дело в порт.. не знаю как... ;BSF PORTB Помогите как досделать?. Заранее спасибо Добавлено Не работает картинка почему-то. Вообщем вот - |
Сообщ.
#2
,
|
|
|
Цитата Maca @ ;ну и выводим всё это дело в порт.. не знаю как... Для начала неплохо бы настроить порт "не знаю как" на вывод. Ибо, по умолчанию, при инициализации, как ни прискорбно, но все порты настраиваются на ввод... Ну можно, разумеется, пнуть разработчиков, чтобы устранили сей недостаток.... |
Сообщ.
#3
,
|
|
|
LIST p=16F84A #include <P16F84A.inc> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC cblock 0x0c Var1 endc org 0x0000 Start: clrf PORTB bsf STATUS,RP0 ;Включение банка 1 movlw b'00001111' movwf TRISB bcf STATUS,RP0 ;Включение банка 0 MainLoop: movf PORTB, w movwf Var1 andlw b'00001111' btfsc Var1, 3 ;знаковый разряд goto ToExtCode ToPort: movlw 0x09 iorwf Var1, f swapf Var1, w andlw b'11110000' movwf PORTB goto MainLoop ToExtCode: comf Var1, f incf Var1, f bsf Var1, 4 goto ToPort end Прикреплённый файлSumma.rar (14,28 Кбайт, скачиваний: 126) Прикреплённый файлSumma.rar (14,28 Кбайт, скачиваний: 111) |
Сообщ.
#4
,
|
|
|
Никаких прерываний по вашему листингу не возникнет, т.к. у 84 пика прерывание по изменению состояния PORTB
работает только с пинами 4 - 7, а по схеме на них светодиоды висят! В архиве помимо asm и hex файлов лежит проект для Протеуса. |