vladka9911 |
Дата: Вс, 12.11.2023, 18:32 | Сообщение # 1 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 12.11.2023
Статус:
Offline
|
Написал программу для опроса и вывода на семисегментные индикаторы чисел с клавиатуры. Но забыл что нужно сделать, чтобы когда нажата одна кнопка программа прерывалась пока она не будет отпущена пытался разобраться сам результатов не дало. Прошу вашей помощи подскажите пожалуйста. Файл проекта в протеусе прилагается.
|
|
|
|
xvovanx |
Дата: Вс, 12.11.2023, 23:10 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата vladka9911 ( ) нужно сделать, чтобы когда нажата одна кнопка программа прерывалась пока она не будет отпущена Не понятно, что вы пытаетесь сделать. Обычно в главной программе в цикле идет вызов подпрограммы опроса клавиатуры. В подпрограмме анализ нажатых кнопок и присвоение переменным/флагам скажем 1. В теле основной программы проверка флага и этих переменных. Основную программу не останавливают. П.С. Протеус ваш открыть не смог, я сижу на более стабильной версии 8.13, а за новыми не гонюсь.
|
|
|
|
vladka9911 |
Дата: Пн, 13.11.2023, 03:52 | Сообщение # 3 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 12.11.2023
Статус:
Offline
|
С U6 идет на вход RB0 ;==================================================================== ; Main.asm file generated by New Project wizard ; ; Created: Вс окт 22 2023 ; Processor: PIC16F877 ; Compiler: MPASM (Proteus) ;====================================================================
;==================================================================== ; DEFINITIONS ;====================================================================
#include p16f877.inc ; Include register definition file __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF ;==================================================================== ; VARIABLES ;====================================================================
;==================================================================== ; RESET and INTERRUPT VECTORS ;====================================================================
; Reset Vector RST code 0x0 goto Start org 0x004 BTFSC PORTB,0 goto $-1 BCF INTCON, INTF retfie ;==================================================================== ; CODE SEGMENT ;==================================================================== Start: BSF STATUS,RP0 BCF STATUS,RP1 BSF INTCON,GIE BSF INTCON,INTE MOVLW b'00000000' MOVWF PIE1 MOVWF PIE2 BCF OPTION_REG,INTEDG MOVLW b'00000000' MOVWF TRISA MOVLW b'00000111' MOVWF TRISB MOVLW b'11111111' MOVWF TRISC MOVLW b'00000000' MOVWF TRISD BCF STATUS,RP0 BCF STATUS,RP1 MOVLW b'11111111' MOVWF PORTD MOVLW b'11111111' MOVWF PORTC CLRF PORTB CLRF PORTA Loop ;=================scanirovanie klaviatyri===================== ;===Co0 - line0 [1]=== co0 BCF STATUS,RP0 MOVLW b'11111110' MOVWF PORTD ;Загружаем 0 в нулевой столбец ;===Co0 - line0 [1]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;===Co0 - line1 [9]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00000000' ;Запись 1 MOVWF PORTB MOVLW b'00100100' ;Запись 9 MOVWF PORTA goto Loop ;===Co0 - line2 [17]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00011100' ;Запись 7 MOVWF PORTA goto Loop ;===Co0 - line3 [25]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00010100' ;Запись 5 MOVWF PORTA goto Loop ;===Co0 - line4 [33]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;===Co0 - line5 [41]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;===Co0 - line6 [49]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00100100' ;Запись 9 MOVWF PORTA goto Loop ;===Co0 - line7 [57]=== BTFSC PORTC, 7 goto co1 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00011100' ;Запись 7 MOVWF PORTA goto Loop ;============================================================================== co1 RLF PORTD ;Сдвиг в PORTD для опроса первого столбца ;===Co1 - line0 [2]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;===Co1 - line1 [10]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00000000' ;Запись 0 MOVWF PORTA goto Loop ;===Co1 - line2 [18]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00100000' ;Запись 8 MOVWF PORTA goto Loop ;===Co1 - line3 [26]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00011000' ;Запись 6 MOVWF PORTA goto Loop ;===Co1 - line4 [34]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;===Co1 - line5 [42]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;===Co1 - line6 [50]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00000000' ;Запись 0 MOVWF PORTA goto Loop ;===Co1 - line7 [58]=== BTFSC PORTC, 7 goto co2 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00100000' ;Запись 8 MOVWF PORTA goto Loop ;============================================================================== co2 RLF PORTD ;Сдвиг в PORTD для опроса второго столбца ;===Co2 - line0 [3]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;===Co2 - line1 [11]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;===Co2 - line2 [19]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00100100' ;Запись 9 MOVWF PORTA goto Loop ;===Co2 - line3 [27]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00011100' ;Запись 7 MOVWF PORTA goto Loop ;===Co2 - line4 [35]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00010100' ;Запись 5 MOVWF PORTA goto Loop ;===Co2 - line5 [43]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;===Co2 - line6 [51]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;===Co2 - line7 [59]=== BTFSC PORTC, 7 goto co3 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00100100' ;Запись 9 MOVWF PORTA goto Loop ;============================================================================== co3 RLF PORTD ;Сдвиг в PORTD для опроса третьего столбца ;===Co3 - line0 [4]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;===Co3 - line1 [12]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;===Co3 - line2 [20]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00000000' ;Запись 0 MOVWF PORTA goto Loop ;===Co3 - line3 [28]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00100000' ;Запись 8 MOVWF PORTA goto Loop ;===Co3 - line4 [36]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00011000' ;Запись 6 MOVWF PORTA goto Loop ;===Co3 - line5 [44]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;===Co3 - line6 [52]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;===Co3 - line7 [60]=== BTFSC PORTC, 7 goto co4 MOVLW b'01100000' ;Запись 6 MOVWF PORTB MOVLW b'00000000' ;Запись 0 MOVWF PORTA goto LoopДобавлено (13.11.2023, 03:52) --------------------------------------------- ;============================================================================== co4 RLF PORTD ;Сдвиг в PORTD для опроса четвертого столбца ;===Co4 - line0 [5]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00010100' ;Запись 5 MOVWF PORTA goto Loop ;===Co4 - line1 [13]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;===Co4 - line2 [21]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;===Co4 - line3 [29]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00100100' ;Запись 9 MOVWF PORTA goto Loop ;===Co4 - line4 [37]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00011100' ;Запись 7 MOVWF PORTA goto Loop ;===Co4 - line5 [45]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00010100' ;Запись 5 MOVWF PORTA goto Loop ;===Co4 - line6 [53]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;===Co4 - line7 [61]=== BTFSC PORTC, 7 goto co5 MOVLW b'01100000' ;Запись 6 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;============================================================================== co5 RLF PORTD ;Сдвиг в PORTD для опроса пятого столбца ;===Co5 - line0 [6]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00011000' ;Запись 6 MOVWF PORTA goto Loop ;===Co5 - line1 [14]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;===Co5 - line2 [22]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;===Co5 - line3 [30]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00000000' ;Запись 0 MOVWF PORTA goto Loop ;===Co5 - line4 [38]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00100000' ;Запись 8 MOVWF PORTA goto Loop ;===Co5 - line5 [46]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00011000' ;Запись 6 MOVWF PORTA goto Loop ;===Co5 - line6 [54]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;===Co5 - line7 [62]=== BTFSC PORTC, 7 goto co6 MOVLW b'01100000' ;Запись 6 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;============================================================================== co6 RLF PORTD ;Сдвиг в PORTD для опроса шестого столбца ;===Co6 - line0 [7]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00011100' ;Запись 7 MOVWF PORTA goto Loop ;===Co6 - line1 [15]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00010100' ;Запись 5 MOVWF PORTA goto Loop ;===Co6 - line2 [23]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;===Co6 - line3 [31]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00000100' ;Запись 1 MOVWF PORTA goto Loop ;===Co6 - line4 [39]=== BTFSC PORTC, 4 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00100100' ;Запись 9 MOVWF PORTA goto Loop ;===Co6 - line5 [47]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00011100' ;Запись 7 MOVWF PORTA goto Loop ;===Co6 - line6 [55]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00010100' ;Запись 5 MOVWF PORTA goto Loop ;===Co6 - line7 [63]=== BTFSC PORTC, 7 goto co7 MOVLW b'01100000' ;Запись 6 MOVWF PORTB MOVLW b'00001100' ;Запись 3 MOVWF PORTA goto Loop ;============================================================================== co7 RLF PORTD ;Сдвиг в PORTD для опроса седьмого столбца ;===Co7 - line0 [8]=== BTFSC PORTC, 0 ;если 1, то выполняется переход на следующую строку goto $+6 MOVLW b'00000000' ;Запись 0 MOVWF PORTB MOVLW b'00100000' ;Запись 8 MOVWF PORTA goto Loop ;===Co7 - line1 [16]=== BTFSC PORTC, 1 goto $+6 MOVLW b'00010000' ;Запись 1 MOVWF PORTB MOVLW b'00011000' ;Запись 6 MOVWF PORTA goto Loop ;===Co7 - line2 [24]=== BTFSC PORTC, 2 goto $+6 MOVLW b'00100000' ;Запись 2 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;===Co7 - line3 [32]=== BTFSC PORTC, 3 goto $+6 MOVLW b'00110000' ;Запись 3 MOVWF PORTB MOVLW b'00001000' ;Запись 2 MOVWF PORTA goto Loop ;===Co7 - line4 [40]=== BTFSC PORTC, 4 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00000000' ;Запись 0 MOVWF PORTA goto Loop ;===Co7 - line5 [48]=== BTFSC PORTC, 5 goto $+6 MOVLW b'01000000' ;Запись 4 MOVWF PORTB MOVLW b'00100000' ;Запись 8 MOVWF PORTA goto Loop ;===Co7 - line6 [56]=== BTFSC PORTC, 6 goto $+6 MOVLW b'01010000' ;Запись 5 MOVWF PORTB MOVLW b'00011000' ;Запись 6 MOVWF PORTA goto Loop ;===Co7 - line7 [64]=== BTFSC PORTC, 7 goto Loop MOVLW b'01100000' ;Запись 6 MOVWF PORTB MOVLW b'00010000' ;Запись 4 MOVWF PORTA goto Loop ;============================================================================== END
|
|
|
|
xvovanx |
Дата: Пн, 13.11.2023, 19:25 | Сообщение # 4 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Как бы я в ассемблере не силен однако, тут на форуме больше как то Протоном да Пик Бейсиком балуемся
|
|
|
|
vladka9911 |
Дата: Вт, 14.11.2023, 05:42 | Сообщение # 5 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 12.11.2023
Статус:
Offline
|
Цитата xvovanx ( ) Как бы я в ассемблере не силен однако, тут на форуме больше как то Протоном да Пик Бейсиком балуемся Хотя бы суть понять как это должно работать)
|
|
|
|
xvovanx |
Дата: Вт, 14.11.2023, 19:02 | Сообщение # 6 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата vladka9911 ( ) Хотя бы суть понять как это должно работать) скачай любую программу на форуме с опросом кнопок или клавиатуры, если не понял то как я описал работу клавиатуры
Сообщение отредактировал
xvovanx - Вт, 14.11.2023, 19:23
|
|
|
|