Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

все ок, проверил на mega48

Отправлено klen 04 сентября 2008 г. 20:51
В ответ на: я по этой реплике писал "код в студию" но никто не оветил. щас попробую про прерывания глянуть отправлено klen 04 сентября 2008 г. 20:27

программа:
#include <avr/io.h>
#include <avr/interrupt.h>

volatile uint8_t x = 0 ;

int main(void)
{
while(1)
{
x = 1 ;
} ;
return 1 ;
}

ISR(TWI_vect) // пред-крайний в таблице векторов прерываний адрес
{
x = 2 ;
}

ISR(SPM_READY_vect) // крайний в таблице векторов прерываний адрес
{
x = 3 ;
}

сгенеренный код:



+00000000: C019 RJMP PC+0x001A Relative jump
+00000001: C033 RJMP PC+0x0034 Relative jump
+00000002: C032 RJMP PC+0x0033 Relative jump
+00000003: C031 RJMP PC+0x0032 Relative jump
+00000004: C030 RJMP PC+0x0031 Relative jump
+00000005: C02F RJMP PC+0x0030 Relative jump
+00000006: C02E RJMP PC+0x002F Relative jump
+00000007: C02D RJMP PC+0x002E Relative jump
+00000008: C02C RJMP PC+0x002D Relative jump
+00000009: C02B RJMP PC+0x002C Relative jump
+0000000A: C02A RJMP PC+0x002B Relative jump
+0000000B: C029 RJMP PC+0x002A Relative jump
+0000000C: C028 RJMP PC+0x0029 Relative jump
+0000000D: C027 RJMP PC+0x0028 Relative jump
+0000000E: C026 RJMP PC+0x0027 Relative jump
+0000000F: C025 RJMP PC+0x0026 Relative jump
+00000010: C024 RJMP PC+0x0025 Relative jump
+00000011: C023 RJMP PC+0x0024 Relative jump
+00000012: C022 RJMP PC+0x0023 Relative jump
+00000013: C021 RJMP PC+0x0022 Relative jump
+00000014: C020 RJMP PC+0x0021 Relative jump
+00000015: C01F RJMP PC+0x0020 Relative jump
+00000016: C01E RJMP PC+0x001F Relative jump
+00000017: C01D RJMP PC+0x001E Relative jump
+00000018: C021 RJMP PC+0x0022 Relative jump
+00000019: C02F RJMP PC+0x0030 Relative jump
+0000001A: 2411 CLR R1 Clear Register
+0000001B: BE1F OUT 0x3F,R1 Out to I/O location
+0000001C: EFCF SER R28 Set Register
+0000001D: E0D2 LDI R29,0x02 Load immediate
+0000001E: BFDE OUT 0x3E,R29 Out to I/O location
+0000001F: BFCD OUT 0x3D,R28 Out to I/O location
+00000020: E011 LDI R17,0x01 Load immediate
+00000021: E0A0 LDI R26,0x00 Load immediate
+00000022: E0B1 LDI R27,0x01 Load immediate
+00000023: EBE4 LDI R30,0xB4 Load immediate
+00000024: E0F0 LDI R31,0x00 Load immediate
+00000025: C002 RJMP PC+0x0003 Relative jump
+00000026: 9005 LPM R0,Z+ Load program memory and postincrement
+00000027: 920D ST X+,R0 Store indirect and postincrement
+00000028: 30A0 CPI R26,0x00 Compare with immediate
+00000029: 07B1 CPC R27,R17 Compare with carry
+0000002A: F7D9 BRNE PC-0x04 Branch if not equal
+0000002B: E011 LDI R17,0x01 Load immediate
+0000002C: E0A0 LDI R26,0x00 Load immediate
+0000002D: E0B1 LDI R27,0x01 Load immediate
+0000002E: C001 RJMP PC+0x0002 Relative jump
+0000002F: 921D ST X+,R1 Store indirect and postincrement
+00000030: 30A1 CPI R26,0x01 Compare with immediate
+00000031: 07B1 CPC R27,R17 Compare with carry
+00000032: F7E1 BRNE PC-0x03 Branch if not equal
+00000033: D002 RCALL PC+0x0003 Relative call subroutine
+00000034: C023 RJMP PC+0x0024 Relative jump
+00000035: CFCA RJMP PC-0x0035 Relative jump
@00000036: main
---- Tf.c -----------------------------------------------------------------------------------------
7: {
+00000036: E081 LDI R24,0x01 Load immediate
+00000037: 93800100 STS 0x0100,R24 Store direct to data space
+00000039: CFFD RJMP PC-0x0002 Relative jump
@0000003A: __vector_24
16: {
+0000003A: 921F PUSH R1 Push register on stack
+0000003B: 920F PUSH R0 Push register on stack
+0000003C: B60F IN R0,0x3F In from I/O location
+0000003D: 920F PUSH R0 Push register on stack
+0000003E: 2411 CLR R1 Clear Register
+0000003F: 938F PUSH R24 Push register on stack
17: x = 2 ;
+00000040: E082 LDI R24,0x02 Load immediate
+00000041: 93800100 STS 0x0100,R24 Store direct to data space
18: }
+00000043: 918F POP R24 Pop register from stack
+00000044: 900F POP R0 Pop register from stack
+00000045: BE0F OUT 0x3F,R0 Out to I/O location
+00000046: 900F POP R0 Pop register from stack
+00000047: 901F POP R1 Pop register from stack
+00000048: 9518 RETI Interrupt return
@00000049: __vector_25
21: {
+00000049: 921F PUSH R1 Push register on stack
+0000004A: 920F PUSH R0 Push register on stack
+0000004B: B60F IN R0,0x3F In from I/O location
+0000004C: 920F PUSH R0 Push register on stack
+0000004D: 2411 CLR R1 Clear Register
+0000004E: 938F PUSH R24 Push register on stack
22: x = 3 ;
+0000004F: E083 LDI R24,0x03 Load immediate
+00000050: 93800100 STS 0x0100,R24 Store direct to data space
23: }
+00000052: 918F POP R24 Pop register from stack
+00000053: 900F POP R0 Pop register from stack
+00000054: BE0F OUT 0x3F,R0 Out to I/O location
+00000055: 900F POP R0 Pop register from stack
+00000056: 901F POP R1 Pop register from stack
+00000057: 9518 RETI Interrupt return
+00000058: 94F8 CLI Global Interrupt Disable
+00000059: CFFF RJMP PC-0x0000 Relative jump
+0000005A: FFFF ??? Data or unknown opcode
+0000005B: FFFF ??? Data or unknown opcode
+0000005C: FFFF ??? Data or unknown opcode
+0000005D: FFFF ??? Data or unknown opcode
+0000005E: FFFF ??? Data or unknown opcode
+0000005F: FFFF ??? Data or unknown opcode


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите шесть пополам:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru