home *** CD-ROM | disk | FTP | other *** search
INI File | 1991-04-05 | 13.1 KB | 260 lines |
- [LISTING FIVE]
- #include "hc05c8.h"
- 0000 #pragma portrw PORTA @ 0x00;
- 0003 #pragma portrw PORTB @ 0x03;
- 0002 #pragma portrw PORTC @ 0x02;
- 0003 #pragma portr PORTD @ 0x03;
- 0004 #pragma portrw DDRA @ 0x04;
- 0005 #pragma portrw DDRB @ 0x05;
- 0006 #pragma portrw DDRC @ 0x06;
- 000A #pragma portrw SPCR @ 0x0a;
- 000B #pragma portrw SPSR @ 0x0b;
- 000C #pragma portrw SPDR @ 0x0c;
- 000D #pragma portrw BAUD @ 0x0d;
- 000E #pragma portrw SCCR1 @ 0x0e;
- 000F #pragma portrw SCCR2 @ 0x0f;
- 0010 #pragma portrw SCSR @ 0x10;
- 0011 #pragma portrw SCDAT @ 0x11;
- 0012 #pragma portrw TCR @ 0x12;
- 0013 #pragma portrw TSR @ 0x13;
- 0014 #pragma portrw ICHI @ 0x14;
- 0015 #pragma portrw ICLO @ 0x15;
- 0016 #pragma portrw OCHI @ 0x16;
- 0017 #pragma portrw OCLO @ 0x17;
- 0018 #pragma portrw TCHI @ 0x18;
- 0019 #pragma portrw TCLO @ 0x19;
- 001A #pragma portrw ACHI @ 0x1a;
- 001B #pragma portrw ACLO @ 0x1b;
- 001C #pragma portrw PROG @ 0x1c;
- 001D #pragma portrw COPRST @ 0x1d;
- 001E #pragma portrw COPCR @ 0x1e;
- 1FDF #pragma portrw OPTION @ 0x1fdf;
-
- 1FF4 #pragma vector __SPI @ 0x01ff4;
- 1FF6 #pragma vector __SCI @ 0x01ff6 ;
- 1FF8 #pragma vector __TIMER @ 0x01ff8;
- 1FFA #pragma vector __IRQ @ 0x01ffa;
- 1FFC #pragma vector __SWI @ 0x01ffc ;
- 1FFE #pragma vector __RESET @ 0x01ffe;
-
- #pragma has STOP ;
- #pragma has WAIT ;
- #pragma has MUL ;
-
- 0020 0030 #pragma memory ROMPAGE0 [48] @ 0x020;
- 0100 2000 #pragma memory ROMPROG [8192] @ 0x100;
- 0050 00B0 #pragma memory RAMPAGE0 [176] @ 0x50;
-
- 0001 #define COPF 4 COPCR bits
- 0003 #define CME 3
- 0002 #define COPE 2
- 0001 #define CM1 1
- 0000 #define CM0 0
-
- 0002 #define ICIE 7 TCR bits
- 0006 #define OCIE 6
- 0005 #define TDIE 5
- 0001 #define IEDG 1
- 0000 #define OLVL 0
-
- 0003 #define ICF 7 TSR bits
- 0006 #define OCF 6
- 0005 #define TOF 5
-
- 0004 #define R8 7 SCCR1 bits
- 0006 #define T8 6
- 0004 #define M 4
- 0003 #define WAKE 3
-
- 0005 #define TIE SCCR2 bits
- 0006 #define TCIE 6
- 0005 #define RIE 5
- 0004 #define ILIE 4
- 0003 #define TE 3
- 0002 #define RE 2
- 0001 #define RWU 1
- 0000 #define SBK 0
-
- 0006 #define TRDE 7 SCSR bits
- 0006 #define TC 6
- 0005 #define RDRF 5
- 0004 #define IDLE 4
- 0003 #define OR 3
- 0002 #define NF 2
- 0001 #define FE 1
-
- 0007 #define SPIE 7 SPCR bits
- 0006 #define SPE 6
- 0004 #define MSTR 4
- 0003 #define CPOL 3
- 0002 #define CPHA 2
- 0001 #define SPR1 1
- 0000 #define SPR0 0
-
- 0008 #define SPIF 7 SPSR bits
- 0006 #define WCOL 6
- 0004 #define MODF 4
-
- 0009 #define RAM0 7 OPTION bits
- 0006 #define RAM1 6
- 0003 #define SECU 3
- 0001 #define IRP 1
-
- 000A #define LAT PROG bits
- 0000 #define PGM 0
- #include "general.h"
-
- 0001 #define TRUE 1
- 0000 #define FALSE 0
- 000B #define FOREVER while(TRUE)
- 000C #define max(a,b) (a) > (b) ? (a) : (b)
- 000D #define min(a,b) (a) < (b) ? (a) : (b)
- 000E #define abs(a) (a) >= 0 ? (a) : -(a)
-
- 0050 0051 0052 int hrs, mts, sec; /* global variables */
- 0053 03E8 long count=1000;
-
- struct bothbytes /* 16 bit int structure */
- {
- int hi;
- int lo;
- };
-
- union isboth /* and union */
- {
- long l;
- struct bothbytes b;
- };
-
- 0057 0002 union isboth time_comp_count;
- 0000 registera ac;
- void main(void)
- {
- 0059 int key;
-
- 0100 1C 12 BSET 6,$12 TCR.OCIE = 1; /* enable output compare interrupt */
- 0102 9A CLI CLI(); /* enable all interrupts */
- FOREVER
- {
- 0103 B6 52 LDA $52 if(sec==60) /* do clock things each minute */
- 0105 A1 3C CMP #$3C
- 0107 26 18 BNE $0121
- {
- 0109 3F 52 CLR $52 sec=0;
- 010B 3C 51 INC $51 if(++mts==60)
- 010D B6 51 LDA $51
- 010F A1 3C CMP #$3C
- 0111 26 0E BNE $0121
- {
- 0113 3F 51 CLR $51 mts=0;
- 0115 3C 50 INC $50 if(++hrs==13)
- 0117 B6 50 LDA $50
- 0119 A1 0D CMP #$0D
- 011B 26 04 BNE $0121
- 011D A6 01 LDA #$01 hrs=1;
- 011F B7 50 STA $50
- }
- }
- 0121 8F WAIT WAIT(); /* wait here to save the energy */
- 0122 20 DF BRA $0103 }
- 0124 81 RTS }
- void __TIMER(void) /* time interrupt service routine */
- 1FF8 01 25 {
- /* the program gets here every millisecond */
- 0125 B6 18 LDA $18 time_comp_count.b.hi = TCHI;
- 0127 B7 57 STA $57
- 0129 B6 13 LDA $13 ac =TSR; /* Clear the tof bit */
- 012B B6 19 LDA $19 time_comp_count.b.lo = TCLO;
- 012D B7 58 STA $58
- 012F AB F4 ADD #$F4 time_comp_count.l += 500; /* 500 counts per millisecond */
- 0131 B7 58 STA $58
- 0133 B6 57 LDA $57
- 0135 A9 01 ADC #$01
- 0137 B7 57 STA $57
- 0139 B7 16 STA $16 OCHI = time_comp_count.b.hi;
- 013B B6 13 LDA $13 ac = TSR; /* Clear ocf bit */
- 013D B6 58 LDA $58 OCLO = time_comp_count.b.lo;
- 013F B7 17 STA $17
-
- 0141 B6 54 LDA $54 if(--count)
- 0143 A0 01 SUB #$01
- 0145 B7 54 STA $54
- 0147 24 02 BCC $014B
- 0149 3A 53 DEC $53
- 014B B6 53 LDA $53
- 014D BA 54 ORA $54
- 014F 27 01 BEQ $0152
- 0151 80 RTI return ;
- else
- {
- 0152 3C 52 INC $52 sec++; /* here every second */
- 0154 A6 03 LDA #$03 count=1000;/* reset count to 1 second */
- 0156 B7 53 STA $53
- 0158 A6 E8 LDA #$E8
- 015A B7 54 STA $54
- }
- 015C 80 RTI }
-
- 1FFE 01 5D
-
- 015D AE 50 LDX #$50
- 015F 7F CLR ,X
- 0160 5C INCX
- 0161 A3 FF CPX #$FF
- 0163 26 FA BNE $015F
- 0165 A6 03 LDA #$03
- 0167 B7 53 STA $53
- 0169 A6 E8 LDA #$E8
- 016B B7 54 STA $54
- 016D CC 01 00 JMP $0100
-
- SYMBOL TABLE
-
- LABEL VALUE LABEL VALUE LABEL VALUE LABEL VALUE
-
- ACHI 001A | ACLO 001B | BAUD 000D | CM0 0000
- CM1 0001 | CME 0003 | COPCR 001E | COPE 0002
- COPRST 001D | CPHA 0002 | CPOL 0003 | DDRA 0004
- DDRB 0005 | DDRC 0006 | FALSE 0000 | FE 0001
- ICHI 0014 | ICLO 0015 | IDLE 0004 | IEDG 0001
- ILIE 0004 | IRP 0001 | M 0004 | MODF 0004
- MSTR 0004 | NF 0002 | OCF 0006 | OCHI 0016
- OCIE 0006 | OCLO 0017 | OLVL 0000 | OPTION 1FDF
- OR 0003 | PGM 0000 | PORTA 0000 | PORTB 0003
- PORTC 0002 | PORTD 0003 | PROG 001C | RAM1 0006
- RDRF 0005 | RE 0002 | RIE 0005 | RWU 0001
- SBK 0000 | SCCR1 000E | SCCR2 000F | SCDAT 0011
- SCSR 0010 | SECU 0003 | SPCR 000A | SPDR 000C
- SPE 0006 | SPR0 0000 | SPR1 0001 | SPSR 000B
- T8 0006 | TC 0006 | TCHI 0018 | TCIE 0006
- TCLO 0019 | TCR 0012 | TDIE 0005 | TE 0003
- TOF 0005 | TRUE 0001 | TSR 0013 | WAKE 0003
- WCOL 0006 | __IRQ 1FFA | __RESET 1FFE | __SCI 1FF6
- __SPI 1FF4 | __STARTUP 0000 | __SWI 1FFC | __TIMER 0125
- __longAC 0055 | b 0000 | bothbytes 0002 | count 0053
- hi 0000 | hrs 0050 | isboth 0002 | key 0059
- l 0000 | lo 0001 | main 0100 | mts 0051
- sec 0052 | time_comp_co 0057 |
-
-
- MEMORY USAGE MAP ('X' = Used, '-' = Unused)
-
- 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
- 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ----------------
- 0180 : ---------------- ---------------- ---------------- ----------------
- 01C0 : ---------------- ---------------- ---------------- ----------------
-
- 1F00 : ---------------- ---------------- ---------------- ----------------
- 1F40 : ---------------- ---------------- ---------------- ----------------
- 1F80 : ---------------- ---------------- ---------------- ----------------
- 1FC0 : ---------------- ---------------- ---------------- --------XX----XX
-
- All other memory blocks unused.
-
-
-
- Errors : 0
- Warnings : 0
-
-