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

📄 led.s

📁 单片机实例书籍
💻 S
字号:
	.module Led.c
	.area text(rom, con, rel)
	.dbfile F:\机器人3\avr\AVR典型实例\第2章程序\复件IO~1\跑马灯设计\Led.c
	.dbfunc e DelayMs _DelayMs fV
;              j -> R20,R21
;              i -> R16,R17
	.even
_DelayMs::
	st -y,R20
	st -y,R21
	.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--)
	xjmp L5
L2:
	.dbline 11
;   {for(j=8000;j!=0;j--) ;}
	.dbline 11
	ldi R20,8000
	ldi R21,31
	xjmp 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
L1:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r j 20 i
	.dbsym r i 16 i
	.dbend
	.dbfunc e Horse _Horse fV
;              i -> R16
	.even
_Horse::
	st -y,R20
	st -y,R21
	.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
X2:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L15
X3:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L16
X4:
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L17
X5:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L18
X6:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L19
X7:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L20
X8:
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	breq L21
X9:
	xjmp L12
L14:
	.dbline 16
;  {case 1:PORTA=0x01;break;     //0000 0001B 点亮LED1
	ldi R24,1
	out 0x1b,R24
	.dbline 16
	xjmp L12
L15:
	.dbline 17
;   case 2:PORTA=0x03;break;     //0000 0011B 点亮LED1~LED2
	ldi R24,3
	out 0x1b,R24
	.dbline 17
	xjmp L12
L16:
	.dbline 18
;   case 3:PORTA=0x07;break;     //0000 0111B 点亮LED1~LED3
	ldi R24,7
	out 0x1b,R24
	.dbline 18
	xjmp L12
L17:
	.dbline 19
;   case 4:PORTA=0x0f;break;     //0000 1111B 点亮LED1~LED4
	ldi R24,15
	out 0x1b,R24
	.dbline 19
	xjmp L12
L18:
	.dbline 20
;   case 5:PORTA=0x1f;break;     //0001 1111B 点亮LED1~LED5
	ldi R24,31
	out 0x1b,R24
	.dbline 20
	xjmp L12
L19:
	.dbline 21
;   case 6:PORTA=0x3f;break;     //0011 1111B 点亮LED1~LED6
	ldi R24,63
	out 0x1b,R24
	.dbline 21
	xjmp L12
L20:
	.dbline 22
;   case 7:PORTA=0x7f;break;     //0111 1111B 点亮LED1~LED7
	ldi R24,127
	out 0x1b,R24
	.dbline 22
	xjmp L12
L21:
	.dbline 23
;   case 8:PORTA=0xff;break;     //1111 1111B 点亮LED1~LED8
	ldi R24,255
	out 0x1b,R24
	.dbline 23
	.dbline 24
;   default:break;}
L12:
	.dbline -2
L10:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	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
	xcall _DelayMs
	xjmp L24
L23:
	.dbline 34
;  while(1)                      //程序无条件执行
;   { for(i=0;i<9;i++)           //依次点亮LED1~LED8
	.dbline 34
	clr R20
	xjmp L29
L26:
	.dbline 35
;       {Horse(i);
	.dbline 35
	mov R16,R20
	xcall _Horse
	.dbline 36
; 	   DelayMs(1000);}         //点亮时间约1秒
	ldi R16,1000
	ldi R17,3
	xcall _DelayMs
	.dbline 36
L27:
	.dbline 34
	inc R20
L29:
	.dbline 34
	cpi R20,9
	brlo L26
X10:
	.dbline 37
; 	for(i=7;i!=0;i--)          //依次熄灭LED8~LED1
	ldi R20,7
	xjmp L33
L30:
	.dbline 38
;       {Horse(i);
	.dbline 38
	mov R16,R20
	xcall _Horse
	.dbline 39
; 	   DelayMs(1000);}         //熄灭时间约1秒
	ldi R16,1000
	ldi R17,3
	xcall _DelayMs
	.dbline 39
L31:
	.dbline 37
	dec R20
L33:
	.dbline 37
	tst R20
	brne L30
X11:
	.dbline 40
;   }
L24:
	.dbline 33
	xjmp L23
X12:
	.dbline -2
L22:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
; }

⌨️ 快捷键说明

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