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

📄 main.s

📁 AVR基本外设测试程序
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile C:\avr3\main.c
	.dbfunc e main _main fV
;              x -> R20
	.even
_main::
	.dbline -1
	.dbline 7
;  #include"main.h"
;  extern void keysy(void);
;   
;  
; /*===============主函数部分===================*/ 
; void main(void)
; {  
	.dbline 20
	clr R20
	rjmp L5
L2:
	.dbline 20
	ldi R24,<_LCD
	ldi R25,>_LCD
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
L3:
	.dbline 20
	inc R20
L5:
	.dbline 20
; //   unsigned int i;
;    unsigned char x ;
;    /*===============初始化函数============*/
;   // init_1622();
;   /*
;   ======================================
;   采用定时器管理
;   定时器0预分频系数为1024,定时时间为1.25MS
;   初值为=256-1.25*14.7456*1000000/1024/1000=238
;   首先要开启定时器0,
;   =========================================
;   */
;   for(x=0;x<23;x++)  LCD[x]=0XFF;
	cpi R20,23
	brlo L2
	.dbline 22
;     
;   TCCR0=0X05;   //预分频系数为1024   0000 0101
	ldi R24,5
	out 0x33,R24
	.dbline 23
;   TCNT0=0XEE;   //238              
	ldi R24,238
	out 0x32,R24
	.dbline 24
;   TIMSK|=0X01;  //使能T/C0中断,允许中断
	in R24,0x39
	ori R24,1
	out 0x39,R24
	.dbline 26
; 
;   DDRD&=0XF3;   //PIND2 PIND3设为输入
	in R24,0x11
	andi R24,243
	out 0x11,R24
	.dbline 27
;   MCUCR=0X08;	//00001000下降沿触发中断、GICR
	ldi R24,8
	out 0x35,R24
	.dbline 35
;                 //ISC11,ISC10 INT1下降沿          
;   
;   /*========PB2输出PWM信号WGM[3;0]=1011
;     ========加一计数中比较匹配时清零OC1B
; 	========减一计数中比较匹配时置位
; 	========CS12,CS11,CS10=010,表示8预分频计时器
;   */
;   DDRB|=0X3e;//PB2为输出端,(pb3,pb4,pb5为液晶驱动脚设为输出)
	in R24,0x17
	ori R24,62
	out 0x17,R24
	.dbline 36
;   TCCR1A=0X63;  //0110 0011
	ldi R24,99
	out 0x2f,R24
	.dbline 37
;   TCCR1B=0X12;  //0001 0010
	ldi R24,18
	out 0x2e,R24
	.dbline 38
;   OCR1A=0x61A7;    //设置TOP值为1249
	ldi R24,24999
	ldi R25,97
	out 0x2b,R25
	out 0x2a,R24
	.dbline 39
;   OCR1B=2500;      //比较匹配值
	ldi R24,2500
	ldi R25,9
	out 0x29,R25
	out 0x28,R24
	.dbline 41
;   
;   SREG =0X80;      //使能总中断 
	ldi R24,128
	out 0x3f,R24
	.dbline 42
;   MBZ=0;               
	clr R2
	sts _MBZ,R2
	rjmp L7
L6:
	.dbline 44
;   while(1)          
;   { 
	.dbline 45
;     keysy();  
	rcall _keysy
	.dbline 46
;   	DDRD|=BIT(PD7); //PD7设为输出
	sbi 0x11,7
	.dbline 47
; 	DDRD|=BIT(PD6);
	sbi 0x11,6
	.dbline 48
; 	if(MBZ==0)                                     
	lds R2,_MBZ
	tst R2
	brne L9
	.dbline 49
; 	 {
	.dbline 50
;        LED_LIANG;   //PD7为1,点亮LED指示灯
	sbi 0x12,7
	.dbline 51
; 	 }
L9:
	.dbline 52
; 	if(MBZ==1)                                                 
	lds R24,_MBZ
	cpi R24,1
	brne L11
	.dbline 53
; 	 {
	.dbline 54
; 	   LED_MIE;
	cbi 0x12,7
	.dbline 55
; 	   BIT_80|=0x80;//a.BEEP1=1;
	lds R24,_BIT_80
	ori R24,128
	sts _BIT_80,R24
	.dbline 56
; 	 }
L11:
	.dbline 57
L7:
	.dbline 43
	rjmp L6
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\avr3\main.c
_TMS::
	.blkb 2
	.dbfile C:\avr3/main.h
	.dbsym e TMS _TMS i
_BIT_80::
	.blkb 1
	.dbsym e BIT_80 _BIT_80 c
_CHW::
	.blkb 1
	.dbsym e CHW _CHW c
_KEY::
	.blkb 1
	.dbsym e KEY _KEY c
_KKEY_n::
	.blkb 14
	.dbsym e KKEY_n _KKEY_n A[14:14]c
_LCD::
	.blkb 23
	.dbsym e LCD _LCD A[23:23]c
_VARIA_BIT::
	.blkb 1
	.dbsym e VARIA_BIT _VARIA_BIT c
_MBZ::
	.blkb 1
	.dbsym e MBZ _MBZ c

⌨️ 快捷键说明

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