Created
April 26, 2013 10:28
-
-
Save MrTrick/5466338 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Created: 26/04/2013 2:57:59 PM | |
*/ | |
#include <avr/io.h> | |
#include <inttypes.h> | |
#include <util/delay.h> | |
#define FCPU 8000000UL | |
#define CHA 1<<0 | |
#define CHB 1<<1 | |
#define CHC 1<<2 | |
#define CHD 1<<3 | |
static uint8_t leds[12] = {0,0,0,0,0,0,0,0,0,0,0,0}; | |
static uint8_t masks[12]; | |
int main(void) | |
{ | |
unsigned char counter=0, head=0, tail=0; | |
while(1) | |
{ | |
masks[1] = leds[1]?CHA:0; | |
masks[2] = leds[2]?CHC:0; | |
masks[3] = leds[3]?CHB:0; | |
masks[4] = leds[4]?CHA:0; | |
masks[5] = leds[5]?CHB:0; | |
masks[6] = leds[6]?CHB:0; | |
masks[7] = leds[7]?CHC:0; | |
masks[8] = leds[8]?CHA:0; | |
masks[9] = leds[9]?CHD:0; | |
masks[10] = leds[10]?CHC:0; | |
masks[11] = leds[11]?CHD:0; | |
masks[0] = leds[0]?CHD:0; | |
//A | |
DDRC = 0; | |
PORTC = CHA; | |
DDRC = CHA | masks[3] | masks[2] | masks[0]; | |
_delay_ms(2); | |
//B | |
DDRC = 0; | |
PORTC = CHB; | |
DDRC = masks[4] | CHB | masks[7] | masks[11]; | |
_delay_ms(2); | |
//C | |
DDRC = 0; | |
PORTC = CHC; | |
DDRC = masks[8] | masks[6] | CHC | masks[9]; | |
_delay_ms(2); | |
//D | |
DDRC = 0; | |
PORTC = CHD; | |
DDRC = masks[1] | masks[5] | masks[10] | CHD; | |
_delay_ms(2); | |
//Simple snake growing/shrinking pattern | |
if (++counter&0x10) { counter=0; | |
if (++head>11) head=0; | |
else if(++tail>11) tail=0; | |
leds[head]=1; | |
leds[tail]=0; | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
00000000 JMP 0x00000034 Jump | |
00000002 JMP 0x00000051 Jump | |
00000004 JMP 0x00000051 Jump | |
00000006 JMP 0x00000051 Jump | |
00000008 JMP 0x00000051 Jump | |
0000000A JMP 0x00000051 Jump | |
0000000C JMP 0x00000051 Jump | |
0000000E JMP 0x00000051 Jump | |
00000010 JMP 0x00000051 Jump | |
00000012 JMP 0x00000051 Jump | |
00000014 JMP 0x00000051 Jump | |
00000016 JMP 0x00000051 Jump | |
00000018 JMP 0x00000051 Jump | |
0000001A JMP 0x00000051 Jump | |
0000001C JMP 0x00000051 Jump | |
0000001E JMP 0x00000051 Jump | |
00000020 JMP 0x00000051 Jump | |
00000022 JMP 0x00000051 Jump | |
00000024 JMP 0x00000051 Jump | |
00000026 JMP 0x00000051 Jump | |
00000028 JMP 0x00000051 Jump | |
0000002A JMP 0x00000051 Jump | |
0000002C JMP 0x00000051 Jump | |
0000002E JMP 0x00000051 Jump | |
00000030 JMP 0x00000051 Jump | |
00000032 JMP 0x00000051 Jump | |
00000034 CLR R1 Clear Register | |
00000035 OUT 0x3F,R1 Out to I/O location | |
00000036 SER R28 Set Register | |
00000037 LDI R29,0x08 Load immediate | |
00000038 OUT 0x3E,R29 Out to I/O location | |
00000039 OUT 0x3D,R28 Out to I/O location | |
--- P:\home\tools\hudson\workspace\avr8-gnu-toolchain\src\gcc\gcc\config\avr\libgcc.S | |
0000003A LDI R17,0x01 Load immediate | |
0000003B LDI R26,0x00 Load immediate | |
0000003C LDI R27,0x01 Load immediate | |
0000003D LDI R30,0xF4 Load immediate | |
0000003E LDI R31,0x02 Load immediate | |
0000003F RJMP PC+0x0003 Relative jump | |
00000040 LPM R0,Z+ Load program memory and postincrement | |
00000041 ST X+,R0 Store indirect and postincrement | |
00000042 CPI R26,0x00 Compare with immediate | |
00000043 CPC R27,R17 Compare with carry | |
00000044 BRNE PC-0x04 Branch if not equal | |
00000045 LDI R17,0x01 Load immediate | |
00000046 LDI R26,0x00 Load immediate | |
00000047 LDI R27,0x01 Load immediate | |
00000048 RJMP PC+0x0002 Relative jump | |
00000049 ST X+,R1 Store indirect and postincrement | |
--- P:\home\tools\hudson\workspace\avr8-gnu-toolchain\src\gcc\gcc\config\avr\libgcc.S | |
0000004A CPI R26,0x18 Compare with immediate | |
0000004B CPC R27,R17 Compare with carry | |
0000004C BRNE PC-0x03 Branch if not equal | |
--- No source file ------------------------------------------------------------- | |
0000004D CALL 0x00000053 Call subroutine | |
0000004F JMP 0x00000178 Jump | |
00000051 JMP 0x00000000 Jump | |
--- p:\Projects\test\Debug/.././test.c | |
{ | |
00000053 PUSH R28 Push register on stack | |
00000054 PUSH R29 Push register on stack | |
00000055 RCALL PC+0x0001 Relative call subroutine | |
00000056 IN R28,0x3D In from I/O location | |
00000057 IN R29,0x3E In from I/O location | |
unsigned char counter=0, head=0, tail=0; | |
00000058 STD Y+2,R1 Store indirect with displacement | |
00000059 STD Y+1,R1 Store indirect with displacement | |
masks[3] = leds[3]?CHB:0; | |
0000005A MOV R0,R31 Copy register | |
0000005B LDI R31,0x0F Load immediate | |
0000005C MOV R2,R31 Copy register | |
0000005D LDI R31,0x01 Load immediate | |
0000005E MOV R3,R31 Copy register | |
0000005F MOV R31,R0 Copy register | |
masks[0] = leds[0]?CHD:0; | |
00000060 LDI R26,0x0C Load immediate | |
00000061 LDI R27,0x01 Load immediate | |
unsigned char counter=0, head=0, tail=0; | |
00000062 LDI R24,0x00 Load immediate | |
masks[7] = leds[7]?CHC:0; | |
00000063 LDI R20,0x07 Load immediate | |
00000064 LDI R21,0x01 Load immediate | |
masks[8] = leds[8]?CHA:0; | |
00000065 LDI R22,0x08 Load immediate | |
00000066 LDI R23,0x01 Load immediate | |
masks[9] = leds[9]?CHD:0; | |
00000067 LDI R16,0x09 Load immediate | |
00000068 LDI R17,0x01 Load immediate | |
00000069 MOV R0,R31 Copy register | |
0000006A LDI R31,0x15 Load immediate | |
--- p:\Projects\test\Debug/.././test.c | |
0000006B MOV R14,R31 Copy register | |
0000006C LDI R31,0x01 Load immediate | |
0000006D MOV R15,R31 Copy register | |
0000006E MOV R31,R0 Copy register | |
masks[10] = leds[10]?CHC:0; | |
0000006F MOV R0,R31 Copy register | |
00000070 LDI R31,0x0A Load immediate | |
00000071 MOV R12,R31 Copy register | |
00000072 LDI R31,0x01 Load immediate | |
00000073 MOV R13,R31 Copy register | |
00000074 MOV R31,R0 Copy register | |
00000075 MOV R0,R31 Copy register | |
00000076 LDI R31,0x16 Load immediate | |
00000077 MOV R10,R31 Copy register | |
00000078 LDI R31,0x01 Load immediate | |
00000079 MOV R11,R31 Copy register | |
0000007A MOV R31,R0 Copy register | |
masks[11] = leds[11]?CHD:0; | |
0000007B MOV R0,R31 Copy register | |
0000007C LDI R31,0x0B Load immediate | |
0000007D MOV R8,R31 Copy register | |
--- p:\Projects\test\Debug/.././test.c | |
0000007E LDI R31,0x01 Load immediate | |
0000007F MOV R9,R31 Copy register | |
00000080 MOV R31,R0 Copy register | |
00000081 MOV R0,R31 Copy register | |
00000082 LDI R31,0x17 Load immediate | |
00000083 MOV R6,R31 Copy register | |
00000084 LDI R31,0x01 Load immediate | |
00000085 MOV R7,R31 Copy register | |
00000086 MOV R31,R0 Copy register | |
masks[0] = leds[0]?CHD:0; | |
00000087 MOV R0,R31 Copy register | |
00000088 LDI R31,0x00 Load immediate | |
00000089 MOV R4,R31 Copy register | |
0000008A LDI R31,0x01 Load immediate | |
0000008B MOV R5,R31 Copy register | |
0000008C MOV R31,R0 Copy register | |
masks[1] = leds[1]?CHA:0; | |
0000008D LDI R25,0x01 Load immediate | |
0000008E LDI R30,0x01 Load immediate | |
0000008F LDI R31,0x01 Load immediate | |
00000090 LDD R18,Z+0 Load indirect with displacement |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment