gavrasm Gerd's AVR assembler version 2.1 (C)2006 by DG4FAC
----------------------------------------------------------
Source file: hello.RGB.45.asm
Hex file:    hello.RGB.45.hex
Eeprom file: hello.RGB.45.eep
Compiled:    14.11.2008, 22:31:42
Pass:        2
     1: ;
     2: ; hello.RGB.45.asm
     3: ;
     4: ; RGB LED PWM hello-world
     5: ;
     6: ; Neil Gershenfeld
     7: ; CBA MIT 11/4/07
     8: ;
     9: ; (c) Massachusetts Institute of Technology 2007
    10: ; Permission granted for experimental and personal use;
    11: ; license for commercial sale available from MIT.
    12: ;
    13: 
    14: .include "tn45def.inc"
 -> Warning 009: Include defs not necessary, using internal values!
   File: hello.RGB.45.asm, Line: 14
   Source line: .include "tn45def.inc"
    15: ;
    16: ; definitions
    17: ;
    18: .equ red = PB3; red pin
    19: .equ green = PB4; green pin
    20: .equ blue = PB2; blue pin
    21: ;
    22: ; registers
    23: ;
    24: .def temp = R16; temporary storage
    25: .def temp1 = R17; temporary storage
    26: .def count = R17; loop counter
    27: .def pwm = R18; PWM counter
    28: ;
    29: ; code segment
    30: ;
    31: .cseg
    32: .org 0
    33: 000000   C000  rjmp reset
    34: ;
    35: ; main program
    36: ;
    37: reset:
    38:    ;
    39:    ; set clock divider to /8
    40:    ;
    41: 000001   E800  ldi temp, (1 << CLKPCE)
    42: 000002   E013  ldi temp1, (0 << CLKPS3) | (0 << CLKPS2) | (1 << CLKPS1) | (1 << CLKPS0)
    43: 000003   BD06  out CLKPR, temp
    44: 000004   BD16  out CLKPR, temp1
    45:    ;
    46:    ; set stack pointer to top of RAM
    47:    ;
    48: 000005   E001  ldi temp, high(RAMEND)
    49: 000006   BF0E  out SPH, temp
    50: 000007   E50F  ldi temp, low(RAMEND)
    51: 000008   BF0D  out SPL, temp
    52:    ;
    53:    ; init LED pins for output
    54:    ;
    55: 000009   9AC3  sbi PORTB, red
    56: 00000A   9ABB  sbi DDRB, red
    57: 00000B   9AC4  sbi PORTB, green
    58: 00000C   9ABC  sbi DDRB, green
    59: 00000D   9AC2  sbi PORTB, blue
    60: 00000E   9ABA  sbi DDRB, blue
    61:    ;
    62:    ; main loop
    63:    ;
    64:    main_loop:
    65: 00000F   EF1F  ldi count, 255
    66:       off_red_loop:
    67: 000010   2F21  mov pwm, count
    68: 000011   9AC3  sbi PORTB, red
    69:          off_red_loop_off:
    70: 000012   952A  dec pwm
    71: 000013   F7F1  brne off_red_loop_off
    72: 000014   2F21  mov pwm, count
    73: 000015   98C3  cbi PORTB, red
    74: 	 off_red_loop_on:
    75: 000016   9523  inc pwm
    76: 000017   F7F1  brne off_red_loop_on
    77: 000018   951A  dec count
    78: 000019   F7B1  brne off_red_loop
    79: 00001A   EF1F  ldi count, 255
    80:       red_green_loop:
    81: 00001B   2F21  mov pwm, count
    82: 00001C   98C3  cbi PORTB, red
    83: 00001D   9AC4  sbi PORTB, green
    84:          red_green_loop_off:
    85: 00001E   952A  dec pwm
    86: 00001F   F7F1  brne red_green_loop_off
    87: 000020   2F21  mov pwm, count
    88: 000021   9AC3  sbi PORTB, red
    89: 000022   98C4  cbi PORTB, green
    90: 	 red_green_loop_on:
    91: 000023   9523  inc pwm
    92: 000024   F7F1  brne red_green_loop_on
    93: 000025   951A  dec count
    94: 000026   F7A1  brne red_green_loop
    95:       green_blue_loop:
    96: 000027   2F21  mov pwm, count
    97: 000028   98C4  cbi PORTB, green
    98: 000029   9AC2  sbi PORTB, blue
    99:          green_blue_loop_off:
   100: 00002A   952A  dec pwm
   101: 00002B   F7F1  brne green_blue_loop_off
   102: 00002C   2F21  mov pwm, count
   103: 00002D   9AC4  sbi PORTB, green
   104: 00002E   98C2  cbi PORTB, blue
   105: 	 green_blue_loop_on:
   106: 00002F   9523  inc pwm
   107: 000030   F7F1  brne green_blue_loop_on
   108: 000031   951A  dec count
   109: 000032   F7A1  brne green_blue_loop
   110:       blue_on_loop:
   111: 000033   2F21  mov pwm, count
   112: 000034   9AC3  sbi PORTB, red
   113: 000035   9AC4  sbi PORTB, green
   114:          blue_on_loop_off:
   115: 000036   952A  dec pwm
   116: 000037   F7F1  brne blue_on_loop_off
   117: 000038   2F21  mov pwm, count
   118: 000039   98C3  cbi PORTB, red
   119: 00003A   98C4  cbi PORTB, green
   120: 	 blue_on_loop_on:
   121: 00003B   9523  inc pwm
   122: 00003C   F7F1  brne blue_on_loop_on
   123: 00003D   951A  dec count
   124: 00003E   F7A1  brne blue_on_loop
   125:       on_off_loop:
   126: 00003F   2F21  mov pwm, count
   127: 000040   98C3  cbi PORTB, red
   128: 000041   98C4  cbi PORTB, green
   129: 000042   98C2  cbi PORTB, blue
   130:          on_off_loop_off:
   131: 000043   952A  dec pwm
   132: 000044   F7F1  brne on_off_loop_off
   133: 000045   2F21  mov pwm, count
   134: 000046   9AC3  sbi PORTB, red
   135: 000047   9AC4  sbi PORTB, green
   136: 000048   9AC2  sbi PORTB, blue
   137: 	 on_off_loop_on:
   138: 000049   9523  inc pwm
   139: 00004A   F7F1  brne on_off_loop_on
   140: 00004B   951A  dec count
   141: 00004C   F791  brne on_off_loop
   142: 00004D   CFC1  rjmp main_loop

Program             :       78 words.
Constants           :        0 words.
Total program memory:       78 words.
Eeprom space        :        0 bytes.
Data segment        :        0 bytes.
Compilation completed, no errors.
Compilation endet 14.11.2008, 22:31:42
