Цитата(rezident @ Jun 7 2009, 01:23)

Если вы думаете, что каждый желающий вам помочь будет специально для этого устанавливать Algoritm Builder, то боюсь вы будет долго ждать помощи.

Уважайте коллег! Прикрепляйте листинг программы в
текстовом виде, не просто специфического вида проект.
К сожалению на C я не пишу

, и листинг могу только предоставить из hex фаила, который генерит Алгоритм Билдер. Но собственно нужно ли это, когда он находится в прикрепленном архиве?
Вот листинг, выдранный из AVR Studio
CODE
+00000000: C012 RJMP PC+0x0013 Relative jump
+00000001: 9518 RETI Interrupt return
+00000002: 9518 RETI Interrupt return
+00000003: 9518 RETI Interrupt return
+00000004: 9518 RETI Interrupt return
+00000005: 9518 RETI Interrupt return
+00000006: C0AA RJMP PC+0x00AB Relative jump
+00000007: 9518 RETI Interrupt return
+00000008: 9518 RETI Interrupt return
+00000009: 9518 RETI Interrupt return
+0000000A: 9518 RETI Interrupt return
+0000000B: 9518 RETI Interrupt return
+0000000C: 9518 RETI Interrupt return
+0000000D: 9518 RETI Interrupt return
+0000000E: 9518 RETI Interrupt return
+0000000F: 9518 RETI Interrupt return
+00000010: 9518 RETI Interrupt return
+00000011: C044 RJMP PC+0x0045 Relative jump
+00000012: 9518 RETI Interrupt return
+00000013: E50F LDI R16,0x5F Load immediate
+00000014: BF0D OUT 0x3D,R16 Out to I/O location
+00000015: E004 LDI R16,0x04 Load immediate
+00000016: BF0E OUT 0x3E,R16 Out to I/O location
+00000017: E000 LDI R16,0x00 Load immediate
+00000018: B903 OUT 0x03,R16 Out to I/O location
+00000019: B901 OUT 0x01,R16 Out to I/O location
+0000001A: E200 LDI R16,0x20 Load immediate
+0000001B: B900 OUT 0x00,R16 Out to I/O location
+0000001C: B501 IN R16,0x21 In from I/O location
+0000001D: 6108 ORI R16,0x18 Logical OR with immediate
+0000001E: BD01 OUT 0x21,R16 Out to I/O location
+0000001F: E007 LDI R16,0x07 Load immediate
+00000020: BD01 OUT 0x21,R16 Out to I/O location
+00000021: E100 LDI R16,0x10 Load immediate
+00000022: BF09 OUT 0x39,R16 Out to I/O location
+00000023: E000 LDI R16,0x00 Load immediate
+00000024: BD0F OUT 0x2F,R16 Out to I/O location
+00000025: E00D LDI R16,0x0D Load immediate
+00000026: BD0E OUT 0x2E,R16 Out to I/O location
+00000027: 2700 CLR R16 Clear Register
+00000028: BB05 OUT 0x15,R16 Out to I/O location
+00000029: EF0F SER R16 Set Register
+0000002A: BB04 OUT 0x14,R16 Out to I/O location
+0000002B: E10E LDI R16,0x1E Load immediate
+0000002C: BD0B OUT 0x2B,R16 Out to I/O location
+0000002D: E804 LDI R16,0x84 Load immediate
+0000002E: BD0A OUT 0x2A,R16 Out to I/O location
+0000002F: 2722 CLR R18 Clear Register
+00000030: 2711 CLR R17 Clear Register
+00000031: 2733 CLR R19 Clear Register
+00000032: 2744 CLR R20 Clear Register
+00000033: D056 RCALL PC+0x0057 Relative call subroutine
+00000034: 9478 SEI Global Interrupt Enable
+00000035: D046 RCALL PC+0x0047 Relative call subroutine
+00000036: D002 RCALL PC+0x0003 Relative call subroutine
+00000037: 0000 NOP No operation
+00000038: CFFD RJMP PC-0x0002 Relative jump
+00000039: 94F8 CLI Global Interrupt Disable
+0000003A: 2F12 MOV R17,R18 Copy register
+0000003B: 7F10 ANDI R17,0xF0 Logical AND with immediate
+0000003C: 9512 SWAP R17 Swap nibbles
+0000003D: E7E1 LDI R30,0x71 Load immediate
+0000003E: E0F0 LDI R31,0x00 Load immediate
+0000003F: 0FE1 ADD R30,R17 Add without carry
+00000040: E6A0 LDI R26,0x60 Load immediate
+00000041: E0B0 LDI R27,0x00 Load immediate
+00000042: 9617 ADIW R26,0x07 Add immediate to word
+00000043: 9101 LD R16,Z+ Load indirect and postincrement
+00000044: 930D ST X+,R16 Store indirect and postincrement
+00000045: 2F12 MOV R17,R18 Copy register
+00000046: 701F ANDI R17,0x0F Logical AND with immediate
+00000047: E7E1 LDI R30,0x71 Load immediate
+00000048: E0F0 LDI R31,0x00 Load immediate
+00000049: 0FE1 ADD R30,R17 Add without carry
+0000004A: 9101 LD R16,Z+ Load indirect and postincrement
+0000004B: 930D ST X+,R16 Store indirect and postincrement
+0000004C: E018 LDI R17,0x08 Load immediate
+0000004D: E7E1 LDI R30,0x71 Load immediate
+0000004E: E0F0 LDI R31,0x00 Load immediate
+0000004F: 9632 ADIW R30,0x02 Add immediate to word
+00000050: 9101 LD R16,Z+ Load indirect and postincrement
+00000051: 930D ST X+,R16 Store indirect and postincrement
+00000052: 951A DEC R17 Decrement
+00000053: F7E1 BRNE PC-0x03 Branch if not equal
+00000054: 9478 SEI Global Interrupt Enable
+00000055: 9518 RETI Interrupt return
+00000056: B101 IN R16,0x01 In from I/O location
+00000057: 7F08 ANDI R16,0xF8 Logical AND with immediate
+00000058: E6E0 LDI R30,0x60 Load immediate
+00000059: E0F0 LDI R31,0x00 Load immediate
+0000005A: 9533 INC R19 Increment
+0000005B: 0FE3 ADD R30,R19 Add without carry
+0000005C: E010 LDI R17,0x00 Load immediate
+0000005D: 1FF1 ADC R31,R17 Add with carry
+0000005E: 9141 LD R20,Z+ Load indirect and postincrement
+0000005F: 3131 CPI R19,0x11 Compare with immediate
+00000060: F409 BRNE PC+0x02 Branch if not equal
+00000061: D024 RCALL PC+0x0025 Relative call subroutine
+00000062: 3008 CPI R16,0x08 Compare with immediate
+00000063: F409 BRNE PC+0x02 Branch if not equal
+00000064: D010 RCALL PC+0x0011 Relative call subroutine
+00000065: 3100 CPI R16,0x10 Compare with immediate
+00000066: F409 BRNE PC+0x02 Branch if not equal
+00000067: D00D RCALL PC+0x000E Relative call subroutine
+00000068: 3108 CPI R16,0x18 Compare with immediate
+00000069: F409 BRNE PC+0x02 Branch if not equal
+0000006A: D00B RCALL PC+0x000C Relative call subroutine
+0000006B: 3200 CPI R16,0x20 Compare with immediate
+0000006C: F409 BRNE PC+0x02 Branch if not equal
+0000006D: D013 RCALL PC+0x0014 Relative call subroutine
+0000006E: 3208 CPI R16,0x28 Compare with immediate
+0000006F: F409 BRNE PC+0x02 Branch if not equal
+00000070: D005 RCALL PC+0x0006 Relative call subroutine
+00000071: 3300 CPI R16,0x30 Compare with immediate
+00000072: F409 BRNE PC+0x02 Branch if not equal
+00000073: D00D RCALL PC+0x000E Relative call subroutine
+00000074: 9518 RETI Interrupt return
+00000075: E740 LDI R20,0x70 Load immediate
+00000076: B943 OUT 0x03,R20 Out to I/O location
+00000077: EC05 LDI R16,0xC5 Load immediate
+00000078: BF06 OUT 0x36,R16 Out to I/O location
+00000079: 95A8 WDR Watchdog reset
+0000007A: BE1F OUT 0x3F,R1 Out to I/O location
+0000007B: 9518 RETI Interrupt return
+0000007C: 2733 CLR R19 Clear Register
+0000007D: B61F IN R1,0x3F In from I/O location
+0000007E: EA05 LDI R16,0xA5 Load immediate
+0000007F: BF06 OUT 0x36,R16 Out to I/O location
+00000080: 9518 RETI Interrupt return
+00000081: 2733 CLR R19 Clear Register
+00000082: B61F IN R1,0x3F In from I/O location
+00000083: EA05 LDI R16,0xA5 Load immediate
+00000084: BF06 OUT 0x36,R16 Out to I/O location
+00000085: 9518 RETI Interrupt return
+00000086: E904 LDI R16,0x94 Load immediate
+00000087: BF06 OUT 0x36,R16 Out to I/O location
+00000088: 95A8 WDR Watchdog reset
+00000089: 9518 RETI Interrupt return
+0000008A: E4E6 LDI R30,0x46 Load immediate
+0000008B: E0F1 LDI R31,0x01 Load immediate
+0000008C: E6C0 LDI R28,0x60 Load immediate
+0000008D: E0D0 LDI R29,0x00 Load immediate
+0000008E: E131 LDI R19,0x11 Load immediate
+0000008F: 95C8 LPM Load program memory
+00000090: 9209 ST Y+,R0 Store indirect and postincrement
+00000091: 5FEF SUBI R30,0xFF Subtract immediate
+00000092: 4FFF SBCI R31,0xFF Subtract immediate with carry
+00000093: 953A DEC R19 Decrement
+00000094: F7D1 BRNE PC-0x05 Branch if not equal
+00000095: 2733 CLR R19 Clear Register
+00000096: E5E8 LDI R30,0x58 Load immediate
+00000097: E0F1 LDI R31,0x01 Load immediate
+00000098: E7C1 LDI R28,0x71 Load immediate
+00000099: E0D0 LDI R29,0x00 Load immediate
+0000009A: E03A LDI R19,0x0A Load immediate
+0000009B: 95C8 LPM Load program memory
+0000009C: 9209 ST Y+,R0 Store indirect and postincrement
+0000009D: 5FEF SUBI R30,0xFF Subtract immediate
+0000009E: 4FFF SBCI R31,0xFF Subtract immediate with carry
+0000009F: 953A DEC R19 Decrement
+000000A0: F7D1 BRNE PC-0x05 Branch if not equal
+000000A1: 2733 CLR R19 Clear Register
+000000A2: 9518 RETI Interrupt return
+000000A3: 0000 NOP No operation
+000000A4: E0CE LDI R28,0x0E Load immediate
+000000A5: F0F8 BRCS PC+0x20 Branch if carry set
+000000A6: EE00 LDI R16,0xE0 Load immediate
+000000A7: DA44 RCALL PC-0x05BB Relative call subroutine
+000000A8: 74D6 ANDI R29,0x46 Logical AND with immediate
+000000A9: BEB6 OUT 0x36,R11 Out to I/O location
+000000AA: FEE4 SBRS R14,4 Skip if bit in register set
+000000AB: 00F6 ??? Data or unknown opcode
+000000AC: 44EE SBCI R30,0x4E Subtract immediate with carry
+000000AD: D6DA RCALL PC+0x06DB Relative call subroutine
+000000AE: B674 IN R7,0x34 In from I/O location
+000000AF: E4BE LDI R27,0x4E Load immediate
+000000B0: F6FE BRTC PC-0x20 Branch if T flag cleared
+000000B1: 95A8 WDR Watchdog reset
+000000B2: 9523 INC R18 Increment
+000000B3: 2F12 MOV R17,R18 Copy register
+000000B4: 701F ANDI R17,0x0F Logical AND with immediate
+000000B5: 301A CPI R17,0x0A Compare with immediate
+000000B6: F011 BREQ PC+0x03 Branch if equal
+000000B7: DFC4 RCALL PC-0x003B Relative call subroutine
+000000B8: 9518 RETI Interrupt return
+000000B9: 5F2A SUBI R18,0xFA Subtract immediate
+000000BA: 2F12 MOV R17,R18 Copy register
+000000BB: 7F10 ANDI R17,0xF0 Logical AND with immediate
+000000BC: 3A10 CPI R17,0xA0 Compare with immediate
+000000BD: F011 BREQ PC+0x03 Branch if equal
+000000BE: DFBD RCALL PC-0x0042 Relative call subroutine
+000000BF: 9518 RETI Interrupt return
+000000C0: 2722 CLR R18 Clear Register
+000000C1: DFBA RCALL PC-0x0045 Relative call subroutine
+000000C2: 9518 RETI Interrupt return
Краткое описание:
в программе выполняются две основных операции:
1) Работа с I2C
2) обработка прерывания от Таймера1 (по совпадению). каждую секунду.
Как только приходит прерывание от таймера - обрабатывается маленькая подпрограмма по работе с числами. Далее она же запускает подпрограмму работы с шиной I2C. в свою очередь которая отправляет данные на ЖКИ в строго отведенном порядке (описанном выше). Пока нет никаких прерываний выполняется программа по заполнению масива данных (отправляемых в ЖКИ).
Все передаваемые данные хранятся в SRAM памяти контроллера.
Note: кварц 8Mhz, I2C-шина настроена на 100Khz
Прикрепленные файлы
list.txt ( 13.36 килобайт )
Кол-во скачиваний: 121