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

📄 watchdog.s

📁 AVRkaifashili.rar
💻 S
字号:
	.module WatchDog.c
	.area text(rom, con, rel)
	.dbfile J:\AVRpractice\BOOK\WatchDog\WatchDog.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,2000
	ldi R21,7
	rjmp L9
L6:
	.dbline 11
	.dbline 11
	.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=2000;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=0xfe;break;     //1111 1110B 点亮LED1
	ldi R24,254
	out 0x1b,R24
	.dbline 16
	rjmp L12
L15:
	.dbline 17
;   case 2:PORTA=0xfc;break;     //1111 1100B 点亮LED1~LED2
	ldi R24,252
	out 0x1b,R24
	.dbline 17
	rjmp L12
L16:
	.dbline 18
;   case 3:PORTA=0xf8;break;     //1111 1000B 点亮LED1~LED3
	ldi R24,248
	out 0x1b,R24
	.dbline 18
	rjmp L12
L17:
	.dbline 19
;   case 4:PORTA=0xf0;break;     //1111 0000B 点亮LED1~LED4
	ldi R24,240
	out 0x1b,R24
	.dbline 19
	rjmp L12
L18:
	.dbline 20
;   case 5:PORTA=0xe0;break;     //1110 0000B 点亮LED1~LED5
	ldi R24,224
	out 0x1b,R24
	.dbline 20
	rjmp L12
L19:
	.dbline 21
;   case 6:PORTA=0xc0;break;     //1100 0000B 点亮LED1~LED6
	ldi R24,192
	out 0x1b,R24
	.dbline 21
	rjmp L12
L20:
	.dbline 22
;   case 7:PORTA=0x80;break;     //1000 0000B 点亮LED1~LED7
	ldi R24,128
	out 0x1b,R24
	.dbline 22
	rjmp L12
L21:
	.dbline 23
	clr R2
	out 0x1b,R2
	.dbline 23
	.dbline 24
L12:
	.dbline -2
	.dbline 25
;   case 8:PORTA=0x00;break;     //0000 0000B 点亮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
	.dbline 33
;  WDTCR=0x0f;
	ldi R24,15
	out 0x21,R24
	rjmp L24
L23:
	.dbline 35
;  while(1)                      //程序无条件执行
;   { for(i=1;i<9;i++)           //依次点亮LED1~LED8
	.dbline 35
	ldi R20,1
	rjmp L29
L26:
	.dbline 36
	.dbline 36
	mov R16,R20
	rcall _Horse
	.dbline 37
	ldi R16,1000
	ldi R17,3
	rcall _DelayMs
	.dbline 38
	ldi R24,31
	out 0x21,R24
	.dbline 39
	in R24,0x21
	andi R24,247
	out 0x21,R24
	.dbline 39
L27:
	.dbline 35
	inc R20
L29:
	.dbline 35
	cpi R20,9
	brlo L26
	.dbline 40
;       {Horse(i);
; 	   DelayMs(1000);
; 	   WDTCR=0x1f;
; 	   WDTCR=WDTCR&0xf7;}         //点亮时间约1秒
; 	for(i=9;i>0;i--)          //依次熄灭LED8~LED1
	ldi R20,9
	rjmp L33
L30:
	.dbline 41
	.dbline 41
	mov R16,R20
	rcall _Horse
	.dbline 42
	ldi R16,1000
	ldi R17,3
	rcall _DelayMs
	.dbline 42
L31:
	.dbline 40
	dec R20
L33:
	.dbline 40
	clr R2
	cp R2,R20
	brlo L30
	.dbline 43
	ldi R24,255
	out 0x1b,R24
	.dbline 44
	ldi R16,1000
	ldi R17,3
	rcall _DelayMs
	.dbline 45
L24:
	.dbline 34
	rjmp L23
X3:
	.dbline -2
	.dbline 46
;       {Horse(i);
; 	   DelayMs(1000);}         //熄灭时间约1秒
; 	PORTA=0xff;
;     DelayMs(1000);
;   }
; }
L22:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend

⌨️ 快捷键说明

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