⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intmcu.s

📁 LED显示面板
💻 S
字号:
	.module intmcu.c
	.area text(rom, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\intmcu.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 5
; #include "main.h"
; 
; 
; void port_init(void)
; {
	.dbline 6
;  PORTA = 0x00;
	clr R2
	out 0x2,R2
	.dbline 7
;  DDRA  = 0xff;
	ldi R24,255
	out 0x1,R24
	.dbline 8
;  PORTB = 0x00;
	out 0x5,R2
	.dbline 9
;  DDRB  = 0x00;
	out 0x4,R2
	.dbline 10
;  PORTC = 0x00; //m103 output only
	out 0x8,R2
	.dbline 11
;  DDRC  = 0xff;
	out 0x7,R24
	.dbline 12
;  PORTD = 0x00;
	out 0xb,R2
	.dbline 13
;  DDRD  = 0x83;
	ldi R24,131
	out 0xa,R24
	.dbline 14
;  PORTE = 0xff;
	ldi R24,255
	out 0xe,R24
	.dbline 15
;  DDRE  = 0xfc;
	ldi R24,252
	out 0xd,R24
	.dbline 16
;  PORTF = 0x00;
	out 0x11,R2
	.dbline 17
;  DDRF  = 0xff;
	ldi R24,255
	out 0x10,R24
	.dbline 18
;  PORTG = 0xf8;
	ldi R24,248
	out 0x14,R24
	.dbline 19
;  DDRG  = 0x18;
	ldi R24,24
	out 0x13,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e watchdog_init _watchdog_init fV
	.even
_watchdog_init::
	.dbline -1
	.dbline 23
; }
; 
; void watchdog_init(void)
; {
	.dbline 24
;  WDR(); //this prevents a timout on enabling
	wdr
	.dbline 25
;  WDTCR = 0x0e; //WATCHDOG ENABLED - dont forget to issue WDRs
	ldi R24,14
	ldi R30,96
	ldi R31,0
	std z+0,R24
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 33
; }
; 
; 
; //UART1 initialize
; // desired baud rate:9600
; // actual baud rate:9615 (0.2%)
; void uart0_init(void)
; {
	.dbline 34
;  UCSR0B = 0x00; //disable while setting baud rate
	clr R2
	ldi R30,193
	ldi R31,0
	std z+0,R2
	.dbline 35
;  UCSR0A = 0x00;
	ldi R30,192
	std z+0,R2
	.dbline 36
;  UCSR0C = 0x06;
	ldi R24,6
	ldi R30,194
	std z+0,R24
	.dbline 37
;  UBRR0L = 0x67; //set baud rate lo
	ldi R24,103
	ldi R30,196
	std z+0,R24
	.dbline 38
;  UBRR0H = 0x00; //set baud rate hi
	ldi R30,197
	std z+0,R2
	.dbline 39
;  UCSR0B = 0xD8;
	ldi R24,216
	ldi R30,193
	std z+0,R24
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 44
; }
; 
; 
; void timer0_init(void)
; {
	.dbline 45
;  TCCR0A = 0x00; //stop
	clr R2
	out 0x24,R2
	.dbline 46
;  ASSR  = 0x00; //set async mode
	ldi R30,182
	ldi R31,0
	std z+0,R2
	.dbline 47
;  TCNT0 = 0x83; //set count
	ldi R24,131
	out 0x26,R24
	.dbline 48
;  OCR0  = 0x7D;
	ldi R24,125
	out 0x27,R24
	.dbline 49
;  TCCR0A = 0x05; //start timer
	ldi R24,5
	out 0x24,R24
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e USART_Transmit _USART_Transmit fV
;           data -> R16
	.even
_USART_Transmit::
	.dbline -1
	.dbline 54
; }
; 
; 
; void USART_Transmit( unsigned char data )
; {
L7:
	.dbline 57
L8:
	.dbline 56
; //Wait for empty transmit buffer 
; while ( !( UCSR0A & (1<<UDRE0)) )
	ldi R30,192
	ldi R31,0
	ldd R2,z+0
	sbrs R2,5
	rjmp L7
	.dbline 59
; ;
; //Put data into buffer, sends the data 
; UDR0 = data;
	ldi R30,198
	std z+0,R16
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e USART_Receive _USART_Receive fc
	.even
_USART_Receive::
	.dbline -1
	.dbline 63
; }
; 
; unsigned char USART_Receive( void )
; {
L11:
	.dbline 66
L12:
	.dbline 65
; //Wait for data to be received 
; while ( !(UCSR0A & (1<<RXC0)) )
	ldi R30,192
	ldi R31,0
	ldd R2,z+0
	sbrs R2,7
	rjmp L11
	.dbline 68
; ;
; //Get and return received data from buffer 
; return UDR0;
	ldi R30,198
	ldd R16,z+0
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 84
	jmp _uart0_rx_isr
	.area text(rom, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\intmcu.c
	.dbfunc e uart0_rx_isr _uart0_rx_isr fV
	.even
_uart0_rx_isr::
	.dbline -1
	.dbline 74
; }
; 
; 
; #pragma interrupt_handler uart0_rx_isr:22
; void uart0_rx_isr(void)
; {
	.dbline 75
; ;
	.dbline -2
L14:
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 79
; }
; 
; void init_devices(void)                   //CPU复位
; {
	.dbline 80
;  port_init();
	xcall _port_init
	.dbline 81
;  timer0_init(); 
	xcall _timer0_init
	.dbline 82
;  uart0_init();
	xcall _uart0_init
	.dbline 83
;  TIMSK0 = 0x01; 
	ldi R24,1
	ldi R30,110
	ldi R31,0
	std z+0,R24
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -