0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 3
1

ATtiny2313. ASM. Динамический опрос матричной клавиатуры

26.01.2014, 11:10. Показов 2816. Ответов 2
Метки нет (Все метки)

Помогите написать программу на асм для микроконтроллера аттини 2313 или атмега8 динамический опрос матричной клавиатуры
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2014, 11:10
Ответы с готовыми решениями:

Опрос матричной клавиатуры
Здравствуйте. Подключил к Pinboard 1.1 (atmega16) матричную мембранную клавиатуру 4х4, к PORTA...

Как организовать опрос матричной клавиатуры + DS18B20?
Господа, подскажите, пожалуйста, каким образом организовать опрос матричной клавиатуры и при этом...

Опрос матричной клавиатуры 5*3 с помощью прерывания
Здравствуйте! Начал изучение atmega с матричной клавиатуры и возник затык. На данном этапе хочу...

Синтаксис ASM команд (ATtiny2313)
Здравствуйте. Разбираю код для мк ATtiny2313 и не понимаю эти строки: ;ir1.mpas,17 :: begin...

2
979 / 603 / 100
Регистрация: 15.05.2012
Сообщений: 3,556
26.01.2014, 11:59 2
вот здесь уже почти сделана https://www.cyberforum.ru/micr... 81725.html
0
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 3
26.01.2014, 13:58  [ТС] 3
я смотрел чёт ничего не работает( к сожалению

Добавлено через 56 минут
не могу допилить помогите? плиз 1 2 3 4 5 6 7 8 9 горит когда до 10 доходит 0 на 10 не горит 1_

Добавлено через 3 минуты
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
.include "tn2313def.inc"
 
 
    .MACRO OUTI
            LDI R16, @1
            OUT @0, R16
    .ENDM
;***************************************************
    .def    temp    =r16
    .def    razr    =r17
    .def    flag    =r18
    .def    counter =r19
    .def    Temp1   =r20
    .def    Temp2   =r21
;****************************************************** 
    .dseg   
        digit:  .byte 4
        timer1: .byte 1
 
.cseg
    .org 0x0
        rjmp    init
    .org OVF0addr
        rjmp    T0_ovf
 
;****************************************************
init:   
        ldi     temp,   1
        out     tccr0b, temp
        ldi     temp,   2
        out     timsk,  temp
        
        ldi     temp,0b00001111
        out     DDRD,temp
        ldi     temp,0b00000001
        out     PORTB,temp
        ldi     temp,0b11111110
        out     DDRB,temp
        
        ldi     temp,   0
        sts     digit+3,temp
        ldi     temp,   0
        sts     digit+2,temp
        ldi     temp,   0
        sts     digit+1,temp
        ldi     temp,   0
        sts     digit,  temp
        
        ldi     flag,   0
        ldi     temp,   19
        sts     timer1, temp
        ldi     razr, 1
        ldi     counter,0
 
sei
 
 
;**********************************************************
        
main:   
    sbrs flag, 0
    rcall cod
    rjmp main
 
 
;********************************************************
 
cod:    
        in      temp,   PINB
        sbrc    temp,   0
        
        rjmp    w1
        rcall   Delay1
        lds     temp,digit+3
        inc     temp
        cpi     temp, 10
        sts     digit+3,temp
        brne    w1
        ldi     temp,0
        sts     digit+3,temp
        
        lds     temp,digit+2
        inc     temp
        cpi     temp, 10
        sts     digit+2,temp
        brne    w1
        ldi     temp,0
        sts     digit+2,temp
 
        lds     temp,digit+1
        inc     temp
        cpi     temp, 10
        sts     digit+1,temp
        brne    w1
        ldi     temp,0
        sts     digit+1,temp
 
        lds     temp,digit
        inc     temp
        cpi     temp, 10
        sts     digit,temp
        brne    w1
        ldi     temp,0
        sts     digit,temp
 
;***********************************************************
w1:     rcall   display
        ret
T0_ovf:
        push    temp
        in      temp,sreg
        push    temp
        lds     temp,timer1
        dec     temp    
        cpi     temp,0
        brne    t01
        ldi     temp,19
        ori     flag,1
        sts     timer1,temp
 
 
t01:    pop temp
        out sreg,temp
        pop temp
        reti
;**************************************************************
display:
 
        in  temp,   portd
        andi    temp,   0b11110000
        out portd,  temp
        ldi zh, high(digit)
        ldi zl, low(digit)
        add zl, counter
        ld  temp,   z
        inc counter 
        ldi zh, high(DcMatrix*2)
        ldi zl, low(DcMatrix*2)
        add zl, temp
        lpm
        out portb,  r0
        mov temp,   razr
    ;ori    temp,   0xf0
        out portd,  temp
        lsl razr
        sbrs    razr,   4
        rjmp    d01
        ldi razr,   1
        ldi counter,0
    
 
d01:    ret
;****************************************************************************************************
 
DcMatrix:   ; 0   1     2     3     4     5     6     7     8      9 
           ;.db 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xFF, 0xC6, 0xF6, 0xF0
 
         ;     gfedcba    gfedcba
         .db 0b11111111,0b11110010  ;0,1
         .db 0b01001000,0b01100000  ;2,3
         .db 0b00110010,0b00100100  ;4,5
         .db 0b00000100,0b11110000  ;6,7
         .db 0b00000000,0b00100000  ;8,9
         
 
    
 
 
; Подпрограммы выдержек времени (0,5 сек и 2,5 миллисекунды)
        
    
;****************************************************************************************************         
Delay1:
              push Temp1                            
              push Temp2
 
 
              ldi Temp1,0
              ldi Temp2,0
              
 
d11:          inc Temp1
              brne d11
              inc  Temp2
              brne d11
              
 
              pop Temp2
              pop Temp1
 
              ret
Добавлено через 2 минуты
в массиве 0 поменял 0b11111111 не горит , чтобы горел нужно 0b10000000, но мне нужно чтобы во время запуска индикации горел только один 0 нажал кнопку 1 и так далее

Добавлено через 2 минуты
схема протеус - удалено -
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2014, 13:58

ATTINY2313. WDT посорился с #asm("sei")
Приветствую. Делал я вчера термостат, который управляет нагревателем, и что бы он не сбоил решил...

Сканирование матричной клавиатуры
Здравствуйте! Помогите пожалуйста разобраться. Я пишу опросник матричной клавы 3х4 на СИ в Keil под...

Опрос порта на нажатие кнопки (ASM, ATMega16)
Не могу разобраться в чем дело, в моем проекте порт РС настроен как приемник к каждой ножке будет...

Метод опроса матричной клавиатуры.
Добрый день. Возник один вопрос. В моем устройстве используется матричная клавиатура. Опрашиваю я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.