1;*************************************************************************** 2;* A P P L I C A T I O N N O T E F O R T H E A V R F A M I L Y 3;* 4;* Number :AVR000 5;* File Name :"tn28def.inc" 6;* Title :Register/Bit Definitions for the ATtiny28 7;* Date :99.01.28 8;* Version :1.30 9;* Support E-mail :avr@atmel.com 10;* Target MCU :ATtiny28 11;* 12;* DESCRIPTION 13;* When including this file in the assembly program file, all I/O register 14;* names and I/O register bit names appearing in the data book can be used. 15;* In addition, the two registers forming the data pointers Z have been 16;* assigned names ZL - ZH. 17;* 18;* 19;* The Register names are represented by their hexadecimal address. 20;* 21;* The Register Bit names are represented by their bit number (0-7). 22;* 23;* Please observe the difference in using the bit names with instructions 24;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc" 25;* (skip if bit in register set/cleared). The following example illustrates 26;* this: 27;* 28;* in r16,PORTB ;read PORTB latch 29;* sbr r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#) 30;* out PORTB,r16 ;output to PORTB 31;* 32;* in r16,TIFR ;read the Timer Interrupt Flag Register 33;* sbrc r16,TOV0 ;test the overflow flag (use bit#) 34;* rjmp TOV0_is_set ;jump if set 35;* ... ;otherwise do something else 36;*************************************************************************** 37 38;***** Specify Device 39.device ATtiny28 40 41;***** I/O Register Definitions 42.equ SREG =$3f 43.equ PORTA =$1b 44.equ PACR =$1a 45.equ PINA =$19 46.equ PINB =$16 47.equ PORTD =$12 48.equ DDRD =$11 49.equ PIND =$10 50.equ ACSR =$08 51.equ MCUCS =$07 52.equ ICR =$06 53.equ IFR =$05 54.equ TCCR0 =$04 55.equ TCNT0 =$03 56.equ MODCR =$02 57.equ WDTCR =$01 58.equ OSCCAL =$00 59 60 61;***** Bit Definitions 62.equ PA3 =3 63.equ PA2 =2 64.equ PA1 =1 65.equ PA0 =0 66 67.equ DDA3 =3 68.equ PA2HC =2 69.equ DDA1 =1 70.equ DDA0 =0 71 72.equ PINA3 =3 73.equ PINA1 =1 74.equ PINA0 =0 75 76.equ PINB7 =7 77.equ PINB6 =6 78.equ PINB5 =5 79.equ PINB4 =4 80.equ PINB3 =3 81.equ PINB2 =2 82.equ PINB1 =1 83.equ PINB0 =0 84 85.equ PD7 =7 86.equ PD6 =6 87.equ PD5 =5 88.equ PD4 =4 89.equ PD3 =3 90.equ PD2 =2 91.equ PD1 =1 92.equ PD0 =0 93 94.equ DDD7 =7 95.equ DDD6 =6 96.equ DDD5 =5 97.equ DDD4 =4 98.equ DDD3 =3 99.equ DDD2 =2 100.equ DDD1 =1 101.equ DDD0 =0 102 103.equ PIND7 =7 104.equ PIND6 =6 105.equ PIND5 =5 106.equ PIND4 =4 107.equ PIND3 =3 108.equ PIND2 =2 109.equ PIND1 =1 110.equ PIND0 =0 111 112.equ ACD =7 113.equ ACO =5 114.equ ACI =4 115.equ ACIE =3 116.equ ACIS1 =1 117.equ ACIS0 =0 118 119.equ PLUPB =7 120.equ SE =5 121.equ SM =4 122.equ WDRF =3 123.equ EXTRF =1 124.equ PORF =0 125 126.equ INT1 =7 127.equ INT0 =6 128.equ LLIE =5 129.equ TOIE0 =4 130.equ ISC11 =3 131.equ ISC10 =2 132.equ ISC01 =1 133.equ ISC00 =0 134 135.equ INTF1 =7 136.equ INTF0 =6 137.equ TOV0 =4 138 139.equ FOV0 =7 140.equ OOM01 =4 141.equ OOM00 =3 142.equ CS02 =2 143.equ CS01 =1 144.equ CS00 =0 145 146.equ WDTOE =4 147.equ WDE =3 148.equ WDP2 =2 149.equ WDP1 =1 150.equ WDP0 =0 151 152.equ ONTIM4 =7 153.equ ONTIM3 =6 154.equ ONTIM2 =5 155.equ ONTIM1 =4 156.equ ONTIM0 =3 157.equ MCONF2 =2 158.equ MCONF1 =1 159.equ MCONF0 =0 160 161.equ CAL7 =7 162.equ CAL6 =6 163.equ CAL5 =5 164.equ CAL4 =4 165.equ CAL3 =3 166.equ CAL2 =2 167.equ CAL1 =1 168.equ CAL0 =0 169 170.def ZL =r30 171.def ZH =r31 172 173 174.equ FLASHEND = 0x07FF 175.equ RAMEND = 0x03FF 176 177.equ INT0addr =$001 ;External Interrupt0 Vector Address 178.equ INT1addr =$002 ;External Interrupt1 Vector Address 179.equ LLINTaddr=$003 ;Low level Interrupt Vector Address 180.equ OVF0addr =$004 ;Overflow0 Interrupt Vector Address 181.equ ACIaddr =$005 ;Analog Comparator Interrupt Vector Address 182 183#pragma AVRPART ADMIN PART_NAME ATtiny28 184#pragma AVRPART CORE CORE_VERSION V0E 185#pragma AVRPART MEMORY PROG_FLASH 2048 186#pragma AVRPART MEMORY EEPROM 0 187#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60 188#pragma AVRPART MEMORY INT_SRAM SIZE 0 189