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

📄 led.s

📁 AVRkaifashili.rar
💻 S
字号:
	.module LED.C
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\跑马灯设计\LED.C
	.dbfunc e DelayMs _DelayMs fV
;              j -> R20,R21
;              i -> R16,R17
	.even
_DelayMs::
	rcall push_gset1
	.dbline -1
	.dbline 9
; //******************************FileName: LED.C******************************//
; //******************************ICCAVR V6.30编译****************************//
; 
; #include<io8535v.h>            //头文件,AT90S8535单片机的寄存器定义
; #define uchar unsigned char    //数据类型说明
; #define uint  unsigned int     //数据类型说明
; 
; void DelayMs(uint i)           //Ms级延时函数,参数i:延时时间
; {uint j;
	.dbline 10
;  for(;i!=0;i--)
	rjmp L5
L2:
	.dbline 11
	.dbline 11
	ldi R20,8000
	ldi R21,31
	rjmp L9
L6:
	.dbline 11
L7:
	.dbline 11
	subi R20,1
	sbci R21,0
L9:
	.dbline 11
	cpi R20,0
	cpc R20,R21
	brne L6
X0:
	.dbline 11
L3:
	.dbline 10
	subi R16,1
	sbci R17,0
L5:
	.dbline 10
	cpi R16,0
	cpc R16,R17
	brne L2
X1:
	.dbline -2
	.dbline 12
;   {for(j=8000;j!=0;j--) ;}
; }
L1:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r j 20 i
	.dbsym r i 16 i
	.dbend
	.dbfunc e Horse _Horse fV
;              i -> R16
	.even
_Horse::
	rcall push_gset1
	.dbline -1
	.dbline 15
; 
; void Horse(uchar i)            //跑马灯程序,通过步判断点亮相应的LED
; {switch(i)                     //高电平点亮LED
	.dbline 15
	mov R20,R16
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L15
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L16
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L17
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L18
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L19
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L20
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	breq L21
	rjmp L12
X2:
	.dbline 16
L14:
	.dbline 16
;  {case 1:PORTA=0x01;break;     //0000 0001B 点亮LED1
	ldi R24,1
	out 0x1b,R24
	.dbline 16
	rjmp L12
L15:
	.dbline 17
;   case 2:PORTA=0x03;break;     //0000 0011B 点亮LED1~LED2
	ldi R24,3
	out 0x1b,R24
	.dbline 17
	rjmp L12
L16:
	.dbline 18
;   case 3:PORTA=0x07;break;     //0000 0111B 点亮LED1~LED3
	ldi R24,7
	out 0x1b,R24
	.dbline 18
	rjmp L12
L17:
	.dbline 19
;   case 4:PORTA=0x0f;break;     //0000 1111B 点亮LED1~LED4
	ldi R24,15
	out 0x1b,R24
	.dbline 19
	rjmp L12
L18:
	.dbline 20
;   case 5:PORTA=0x1f;break;     //0001 1111B 点亮LED1~LED5
	ldi R24,31
	out 0x1b,R24
	.dbline 20
	rjmp L12
L19:
	.dbline 21
;   case 6:PORTA=0x3f;break;     //0011 1111B 点亮LED1~LED6
	ldi R24,63
	out 0x1b,R24
	.dbline 21
	rjmp L12
L20:
	.dbline 22
;   case 7:PORTA=0x7f;break;     //0111 1111B 点亮LED1~LED7
	ldi R24,127
	out 0x1b,R24
	.dbline 22
	rjmp L12
L21:
	.dbline 23
	ldi R24,255
	out 0x1b,R24
	.dbline 23
	.dbline 24
L12:
	.dbline -2
	.dbline 25
;   case 8:PORTA=0xff;break;     //1111 1111B 点亮LED1~LED8
;   default:break;}
; }
L10:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 28
; 
; void main(void)               
; {uchar i;
	.dbline 29
;  DDRA=0xff;                    //端口设置:PA口设置为推挽1输出
	ldi R24,255
	out 0x1a,R24
	.dbline 30
;  PORTA=0xff;
	out 0x1b,R24
	.dbline 31
;  PORTA=0x00;                   //PORTA初始值为0,灭掉所有的LED      
	clr R2
	out 0x1b,R2
	.dbline 32
;  DelayMs(1000);
	ldi R16,1000
	ldi R17,3
	rcall _DelayMs
	rjmp L24
L23:
	.dbline 34
;  while(1)                      //程序无条件执行
;   { for(i=0;i<9;i++)           //依次点亮LED1~LED8
	.dbline 34
	clr R20
	rjmp L29
L26:
	.dbline 35
	.dbline 35
	mov R16,R20
	rcall _Horse
	.dbline 36
	ldi R16,1000
	ldi R17,3
	rcall _DelayMs
	.dbline 36
L27:
	.dbline 34
	inc R20
L29:
	.dbline 34
	cpi R20,9
	brlo L26
	.dbline 37
;       {Horse(i);
; 	   DelayMs(1000);}         //点亮时间约1秒
; 	for(i=7;i!=0;i--)          //依次熄灭LED8~LED1
	ldi R20,7
	rjmp L33
L30:
	.dbline 38
	.dbline 38
	mov R16,R20
	rcall _Horse
	.dbline 39
	ldi R16,1000
	ldi R17,3
	rcall _DelayMs
	.dbline 39
L31:
	.dbline 37
	dec R20
L33:
	.dbline 37
	tst R20
	brne L30
	.dbline 40
L24:
	.dbline 33
	rjmp L23
X3:
	.dbline -2
	.dbline 41
;       {Horse(i);
; 	   DelayMs(1000);}         //熄灭时间约1秒
;   }
; }
L22:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend

⌨️ 快捷键说明

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