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

📄 led.s

📁 学单片机得先弄懂它的IO口
💻 S
字号:
	.module led.c
	.area text(rom, con, rel)
	.dbfile C:\icc\mega32\led.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 10
; //ICC-AVR application builder : 2008-07-02 下午 03:28:23
; // Target : M32
; // Crystal: 8.0000Mhz
; 
; #include <iom32v.h>
; #include <macros.h>
; #define  uchar unsigned char  
; 
; void port_init(void) //端口定义
; {
	.dbline 11
;  PORTA = 0x00;       //低电平
	clr R2
	out 0x1b,R2
	.dbline 12
;  DDRA  = 0xFF;       //输入
	ldi R24,255
	out 0x1a,R24
	.dbline 13
;  PORTB = 0x00;       //低电平
	out 0x18,R2
	.dbline 14
;  DDRB  = 0xFF;       //输出
	out 0x17,R24
	.dbline 15
;  PORTC = 0x00; 
	out 0x15,R2
	.dbline 16
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 17
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 18
;  DDRD  = 0x3C;
	ldi R24,60
	out 0x11,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 23
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 25
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 26
;  port_init();
	xcall _port_init
	.dbline 28
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 29
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 30
;  TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 31
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_1us _delay_1us fV
;              i -> R16
	.even
_delay_1us::
	.dbline -1
	.dbline 37
;  //all peripherals are now initialized
; }
; 
; //1微秒延时
; void delay_1us(void)
; {       uchar i=8;
	.dbline 37
	ldi R16,8
	.dbline 38
;        asm("nop");
	nop
	.dbline 39
;         i--;
	dec R16
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              t -> R20
	.even
_delay_nus::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 43
; }
; //长微秒延时
; void delay_nus(uchar t)
; { while(t--)
	xjmp L6
L5:
	.dbline 44
	xcall _delay_1us
L6:
	.dbline 43
	mov R2,R20
	clr R3
	subi R20,1
	tst R2
	brne L5
	.dbline -2
L4:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r t 20 c
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
	.even
_delay_1ms::
	.dbline -1
	.dbline 48
;   delay_1us();
; }
; //1毫秒延时
; void delay_1ms(void)
; {
	.dbline 49
;   delay_nus(1000);
	ldi R16,232
	xcall _delay_nus
	.dbline -2
L8:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              t -> R20
	.even
_delay_nms::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 53
; }
; //长毫秒延时
; void delay_nms(uchar t)
; { while(t--)
	xjmp L11
L10:
	.dbline 54
	xcall _delay_1ms
L11:
	.dbline 53
	mov R2,R20
	clr R3
	subi R20,1
	tst R2
	brne L10
	.dbline -2
L9:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r t 20 c
	.dbend
	.dbfunc e led_out _led_out fV
;              i -> R20
	.even
_led_out::
	xcall push_gset1
	.dbline -1
	.dbline 58
;   delay_1ms();
; }
; //定义LED等
; void led_out(void)
; {  uchar i;
	.dbline 59
;    for(i=1;i<5;i++)
	ldi R20,1
	xjmp L17
L14:
	.dbline 60
	.dbline 60
	ldi R17,6
	sub R17,R20
	ldi R16,1
	xcall lsl8
	in R2,0x12
	or R2,R16
	out 0x12,R2
	.dbline 61
	ldi R16,244
	xcall _delay_nms
	.dbline 61
L15:
	.dbline 59
	inc R20
L17:
	.dbline 59
	cpi R20,5
	brlo L14
	.dbline 62
;    {PORTD|=BIT(6-i);
;    delay_nms(500);}
;    for(i=5;i<13;i++)
	ldi R20,5
	xjmp L21
L18:
	.dbline 63
	.dbline 63
	ldi R17,12
	sub R17,R20
	ldi R16,1
	xcall lsl8
	in R2,0x18
	or R2,R16
	out 0x18,R2
	.dbline 64
	ldi R16,244
	xcall _delay_nms
	.dbline 64
L19:
	.dbline 62
	inc R20
L21:
	.dbline 62
	cpi R20,13
	brlo L18
	.dbline 65
;    {PORTB|=BIT(12-i);
;    delay_nms(500);}
;    for(i=12;i>4;i--)
	ldi R20,12
	xjmp L25
L22:
	.dbline 66
	.dbline 67
	ldi R17,12
	sub R17,R20
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x18
	and R3,R2
	out 0x18,R3
	.dbline 68
	ldi R16,244
	xcall _delay_nms
	.dbline 69
L23:
	.dbline 65
	dec R20
L25:
	.dbline 65
	ldi R24,4
	cp R24,R20
	brlo L22
	.dbline 70
;    {
;     PORTB&=~BIT(12-i);
;     delay_nms(500);
; 	}
; 	for(i=4;i!=0;i--)
	ldi R20,4
	xjmp L29
L26:
	.dbline 71
	.dbline 72
	ldi R17,6
	sub R17,R20
	ldi R16,1
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x12
	and R3,R2
	out 0x12,R3
	.dbline 73
	ldi R16,244
	xcall _delay_nms
	.dbline 74
L27:
	.dbline 70
	dec R20
L29:
	.dbline 70
	tst R20
	brne L26
	.dbline -2
L13:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 78
; 	{
; 	PORTD&=~BIT(6-i);
; 	delay_nms(500);
; 	}
;    }
; //主程序开始
; void main(void)
; {
	.dbline 79
;  init_devices();
	xcall _init_devices
	xjmp L32
L31:
	.dbline 81
	.dbline 82
	xcall _led_out
	.dbline 83
L32:
	.dbline 80
	xjmp L31
X0:
	.dbline -2
L30:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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