?? intmcu.lis
字號:
.module intmcu.c
.area text(rom, con, rel)
0000 .dbfile D:\報警系統設計資料\報警系統軟件\測量模塊基于CAN的系統網程序\CAN網可配置型報警燈板程序\intmcu.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 5
0000 ; #include "main.h"
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 6
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 22B8 out 0x2,R2
0004 .dbline 7
0004 ; DDRA = 0xff;
0004 8FEF ldi R24,255
0006 81B9 out 0x1,R24
0008 .dbline 8
0008 ; PORTB = 0x00;
0008 25B8 out 0x5,R2
000A .dbline 9
000A ; DDRB = 0x00;
000A 24B8 out 0x4,R2
000C .dbline 10
000C ; PORTC = 0x00; //m103 output only
000C 28B8 out 0x8,R2
000E .dbline 11
000E ; DDRC = 0xff;
000E 87B9 out 0x7,R24
0010 .dbline 12
0010 ; PORTD = 0x00;
0010 2BB8 out 0xb,R2
0012 .dbline 13
0012 ; DDRD = 0x83;
0012 83E8 ldi R24,131
0014 8AB9 out 0xa,R24
0016 .dbline 14
0016 ; PORTE = 0xff;
0016 8FEF ldi R24,255
0018 8EB9 out 0xe,R24
001A .dbline 15
001A ; DDRE = 0xfc;
001A 8CEF ldi R24,252
001C 8DB9 out 0xd,R24
001E .dbline 16
001E ; PORTF = 0x00;
001E 21BA out 0x11,R2
0020 .dbline 17
0020 ; DDRF = 0xff;
0020 8FEF ldi R24,255
0022 80BB out 0x10,R24
0024 .dbline 18
0024 ; PORTG = 0xf8;
0024 88EF ldi R24,248
0026 84BB out 0x14,R24
0028 .dbline 19
0028 ; DDRG = 0x18;
0028 88E1 ldi R24,24
002A 83BB out 0x13,R24
002C .dbline -2
002C L2:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e watchdog_init _watchdog_init fV
.even
002E _watchdog_init::
002E .dbline -1
002E .dbline 23
002E ; }
002E ;
002E ; void watchdog_init(void)
002E ; {
002E .dbline 24
002E ; WDR(); //this prevents a timout on enabling
002E A895 wdr
0030 .dbline 25
0030 ; WDTCR = 0x0e; //WATCHDOG ENABLED - dont forget to issue WDRs
0030 8EE0 ldi R24,14
0032 E0E6 ldi R30,96
0034 F0E0 ldi R31,0
0036 8083 std z+0,R24
0038 .dbline -2
0038 L3:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
003A .dbfunc e uart0_init _uart0_init fV
.even
003A _uart0_init::
003A .dbline -1
003A .dbline 33
003A ; }
003A ;
003A ;
003A ; //UART1 initialize
003A ; // desired baud rate:9600
003A ; // actual baud rate:9615 (0.2%)
003A ; void uart0_init(void)
003A ; {
003A .dbline 34
003A ; UCSR0B = 0x00; //disable while setting baud rate
003A 2224 clr R2
003C E1EC ldi R30,193
003E F0E0 ldi R31,0
0040 2082 std z+0,R2
0042 .dbline 35
0042 ; UCSR0A = 0x00;
0042 E0EC ldi R30,192
0044 2082 std z+0,R2
0046 .dbline 36
0046 ; UCSR0C = 0x06;
0046 86E0 ldi R24,6
0048 E2EC ldi R30,194
004A 8083 std z+0,R24
004C .dbline 37
004C ; UBRR0L = 0x67; //set baud rate lo
004C 87E6 ldi R24,103
004E E4EC ldi R30,196
0050 8083 std z+0,R24
0052 .dbline 38
0052 ; UBRR0H = 0x00; //set baud rate hi
0052 E5EC ldi R30,197
0054 2082 std z+0,R2
0056 .dbline 39
0056 ; UCSR0B = 0xD8;
0056 88ED ldi R24,216
0058 E1EC ldi R30,193
005A 8083 std z+0,R24
005C .dbline -2
005C L4:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbend
005E .dbfunc e timer0_init _timer0_init fV
.even
005E _timer0_init::
005E .dbline -1
005E .dbline 44
005E ; }
005E ;
005E ;
005E ; void timer0_init(void)
005E ; {
005E .dbline 45
005E ; TCCR0A = 0x00; //stop
005E 2224 clr R2
0060 24BC out 0x24,R2
0062 .dbline 46
0062 ; ASSR = 0x00; //set async mode
0062 E6EB ldi R30,182
0064 F0E0 ldi R31,0
0066 2082 std z+0,R2
0068 .dbline 47
0068 ; TCNT0 = 0x83; //set count
0068 83E8 ldi R24,131
006A 86BD out 0x26,R24
006C .dbline 48
006C ; OCR0 = 0x7D;
006C 8DE7 ldi R24,125
006E 87BD out 0x27,R24
0070 .dbline 49
0070 ; TCCR0A = 0x05; //start timer
0070 85E0 ldi R24,5
0072 84BD out 0x24,R24
0074 .dbline -2
0074 L5:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbend
0076 .dbfunc e USART_Transmit _USART_Transmit fV
0076 ; data -> R16
.even
0076 _USART_Transmit::
0076 .dbline -1
0076 .dbline 54
0076 ; }
0076 ;
0076 ;
0076 ; void USART_Transmit( unsigned char data )
0076 ; {
0076 L7:
0076 .dbline 57
0076 L8:
0076 .dbline 56
0076 ; //Wait for empty transmit buffer
0076 ; while ( !( UCSR0A & (1<<UDRE0)) )
0076 E0EC ldi R30,192
0078 F0E0 ldi R31,0
007A 2080 ldd R2,z+0
007C 25FE sbrs R2,5
007E FBCF rjmp L7
0080 .dbline 59
0080 ; ;
0080 ; //Put data into buffer, sends the data
0080 ; UDR0 = data;
0080 E6EC ldi R30,198
0082 0083 std z+0,R16
0084 .dbline -2
0084 L6:
0084 .dbline 0 ; func end
0084 0895 ret
0086 .dbsym r data 16 c
0086 .dbend
0086 .dbfunc e USART_Receive _USART_Receive fc
.even
0086 _USART_Receive::
0086 .dbline -1
0086 .dbline 63
0086 ; }
0086 ;
0086 ; unsigned char USART_Receive( void )
0086 ; {
0086 L11:
0086 .dbline 66
0086 L12:
0086 .dbline 65
0086 ; //Wait for data to be received
0086 ; while ( !(UCSR0A & (1<<RXC0)) )
0086 E0EC ldi R30,192
0088 F0E0 ldi R31,0
008A 2080 ldd R2,z+0
008C 27FE sbrs R2,7
008E FBCF rjmp L11
0090 .dbline 68
0090 ; ;
0090 ; //Get and return received data from buffer
0090 ; return UDR0;
0090 E6EC ldi R30,198
0092 0081 ldd R16,z+0
0094 .dbline -2
0094 L10:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbend
.area vector(rom, abs)
.org 84
0054 0C944B00 jmp _uart0_rx_isr
.area text(rom, con, rel)
0096 .dbfile D:\報警系統設計資料\報警系統軟件\測量模塊基于CAN的系統網程序\CAN網可配置型報警燈板程序\intmcu.c
0096 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0096 _uart0_rx_isr::
0096 .dbline -1
0096 .dbline 74
0096 ; }
0096 ;
0096 ;
0096 ; #pragma interrupt_handler uart0_rx_isr:22
0096 ; void uart0_rx_isr(void)
0096 ; {
0096 .dbline 75
0096 ; ;
0096 .dbline -2
0096 L14:
0096 .dbline 0 ; func end
0096 1895 reti
0098 .dbend
0098 .dbfunc e init_devices _init_devices fV
.even
0098 _init_devices::
0098 .dbline -1
0098 .dbline 79
0098 ; }
0098 ;
0098 ; void init_devices(void) //CPU復位
0098 ; {
0098 .dbline 80
0098 ; port_init();
0098 B3DF xcall _port_init
009A .dbline 81
009A ; timer0_init();
009A E1DF xcall _timer0_init
009C .dbline 82
009C ; uart0_init();
009C CEDF xcall _uart0_init
009E .dbline 83
009E ; TIMSK0 = 0x01;
009E 81E0 ldi R24,1
00A0 EEE6 ldi R30,110
00A2 F0E0 ldi R31,0
00A4 8083 std z+0,R24
00A6 .dbline -2
00A6 L15:
00A6 .dbline 0 ; func end
00A6 0895 ret
00A8 .dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -