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

📄 main.s

📁 AVR单片机C语言程序设计实例精粹
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area data(ram, con, rel)
_wTimeCount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
	.dbsym e wTimeCount _wTimeCount c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 24
; //***************************************************************
; // File Name : LED.c
; // Author    : Steaven
; // Created   : 2008-07-26
; // Modified  : 
; // Revision  : V0.0
; //***************************************************************
; 
; #include "iom16v.h"
; #include "DataType.h"
; #include "app.h"
; #include "lcd.h" 
; #include "zimo.h"
; 
; void LCD_Write_Frame0(void);
; void LCD_Write_Frame1(void);
; void LCD_Write_Frame2(void);
; void LCD_Display_Init(void);
; void LCD_Display_Update(void);
; 
; INT8U wTimeCount = 0;
; 
; void main(void) 
; { 
	.dbline 25
; 	Hardware_Init();
	xcall _Hardware_Init
	.dbline 26
; 	LCD_Init();
	xcall _LCD_Init
	.dbline 27
; 	LCD_Display_Init();
	xcall _LCD_Display_Init
	xjmp L3
L2:
	.dbline 29
	.dbline 30
	xcall _LCD_Display_Update
	.dbline 31
L3:
	.dbline 28
	xjmp L2
X0:
	.dbline -2
	.dbline 32
; 	while(1)
; 	{
; 		LCD_Display_Update();
; 	}
; } 
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 76
	jmp _wTimeCountr0_Interrupt
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
L6:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
L7:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
L8:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\main.c
	.dbfunc e wTimeCountr0_Interrupt _wTimeCountr0_Interrupt fV
	.dbsym s buzzer_status L8 c
	.dbsym s buzzer_count L7 c
	.dbsym s int_count L6 c
	.even
_wTimeCountr0_Interrupt::
	xcall push_lset
	.dbline -1
	.dbline 42
; 
; //***************************************************************
; // Function    : wTimeCountr0_Interrupt                                
; // Input       : none                                            
; // Output      : none                                            
; // Description : ATmega16 T/C0 ISR                               
; //***************************************************************
; #pragma interrupt_handler wTimeCountr0_Interrupt:20                    
; void wTimeCountr0_Interrupt(void)                                      
; {                                                                
	.dbline 48
; 	static INT8U int_count = 0;
; 	static INT8U buzzer_count = 0;
; 	static INT8U buzzer_status = 0;
; 	                                      
; 	//Clear wTimeCountr0 OCIF Flag                                     
; 	TIFR  |= 0x02;                                               
	in R24,0x38
	ori R24,2
	out 0x38,R24
	.dbline 49
; 	TCNT0  = 0x00;                                              
	clr R2
	out 0x32,R2
	.dbline 51
; 	//Interrupt Count
; 	int_count++;
	lds R24,L6
	subi R24,255    ; addi 1
	sts L6,R24
	.dbline 52
; 	if(int_count == 1)
	cpi R24,1
	brne L9
	.dbline 53
; 	{
	.dbline 54
; 		Buzzer_ON();
	xcall _Buzzer_ON
	.dbline 55
; 	}
	xjmp L10
L9:
	.dbline 56
; 	else if(int_count == 6)
	lds R24,L6
	cpi R24,6
	brne L11
	.dbline 57
; 	{
	.dbline 58
; 		if(wTimeCount <= 8)
	ldi R24,8
	lds R2,_wTimeCount
	cp R24,R2
	brlo L12
	.dbline 59
; 		{
	.dbline 60
; 			Buzzer_OFF();
	xcall _Buzzer_OFF
	.dbline 61
; 		}
	.dbline 62
; 	}
	xjmp L12
L11:
	.dbline 63
; 	else if(int_count == 100)
	lds R24,L6
	cpi R24,100
	brne L15
	.dbline 64
; 	{
	.dbline 65
; 		int_count = 0;
	clr R2
	sts L6,R2
	.dbline 66
; 		if(wTimeCount <= 8)
	ldi R24,8
	lds R2,_wTimeCount
	cp R24,R2
	brlo L17
	.dbline 67
; 		{
	.dbline 68
; 			wTimeCount++;
	mov R24,R2
	subi R24,255    ; addi 1
	sts _wTimeCount,R24
	.dbline 69
; 		}
L17:
	.dbline 70
; 	}                                                
L15:
L12:
L10:
	.dbline -2
	.dbline 71
; } 
L5:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e LCD_Write_Frame0 _LCD_Write_Frame0 fV
	.even
_LCD_Write_Frame0::
	sbiw R28,2
	.dbline -1
	.dbline 74
; 
; void LCD_Write_Frame0(void)
; {
	.dbline 75
; 	LCD_Write_Char(0,0x08,Char_0816_0x00);
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,8
	clr R16
	xcall _LCD_Write_Char
	.dbline 76
; 	LCD_Write_Word(0,0x09,Char_1616_DI);
	ldi R24,<_Char_1616_DI
	ldi R25,>_Char_1616_DI
	std y+1,R25
	std y+0,R24
	ldi R18,9
	clr R16
	xcall _LCD_Write_Word
	.dbline 77
; 	LCD_Write_Char(0,0x0B,Char_0816_2);
	ldi R24,<_Char_0816_2
	ldi R25,>_Char_0816_2
	std y+1,R25
	std y+0,R24
	ldi R18,11
	clr R16
	xcall _LCD_Write_Char
	.dbline 78
; 	LCD_Write_Char(0,0x0C,Char_0816_9);
	ldi R24,<_Char_0816_9
	ldi R25,>_Char_0816_9
	std y+1,R25
	std y+0,R24
	ldi R18,12
	clr R16
	xcall _LCD_Write_Char
	.dbline 79
; 	LCD_Write_Word(0,0x0D,Char_1616_JIE);
	ldi R24,<_Char_1616_JIE
	ldi R25,>_Char_1616_JIE
	std y+1,R25
	std y+0,R24
	ldi R18,13
	clr R16
	xcall _LCD_Write_Word
	.dbline 80
; 	LCD_Write_Char(0,0x0F,Char_0816_0x00);
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,15
	clr R16
	xcall _LCD_Write_Char
	.dbline 82
; 	
; 	LCD_Write_Word(1,0x08,Char_1616_AO);
	ldi R24,<_Char_1616_AO
	ldi R25,>_Char_1616_AO
	std y+1,R25
	std y+0,R24
	ldi R18,8
	ldi R16,1
	xcall _LCD_Write_Word
	.dbline 83
; 	LCD_Write_Word(1,0x0A,Char_1616_LIN);
	ldi R24,<_Char_1616_LIN
	ldi R25,>_Char_1616_LIN
	std y+1,R25
	std y+0,R24
	ldi R18,10
	ldi R16,1
	xcall _LCD_Write_Word
	.dbline 84
; 	LCD_Write_Word(1,0x0C,Char_1616_PI);
	ldi R24,<_Char_1616_PI
	ldi R25,>_Char_1616_PI
	std y+1,R25
	std y+0,R24
	ldi R18,12
	ldi R16,1
	xcall _LCD_Write_Word
	.dbline 85
; 	LCD_Write_Word(1,0x0E,Char_1616_KE);
	ldi R24,<_Char_1616_KE
	ldi R25,>_Char_1616_KE
	std y+1,R25
	std y+0,R24
	ldi R18,14
	ldi R16,1
	xcall _LCD_Write_Word
	.dbline 87
; 	
; 	LCD_Write_Char(2,0x08,Char_0816_0x00);
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,8
	ldi R16,2
	xcall _LCD_Write_Char
	.dbline 88
; 	LCD_Write_Word(2,0x09,Char_1616_YUN);
	ldi R24,<_Char_1616_YUN
	ldi R25,>_Char_1616_YUN
	std y+1,R25
	std y+0,R24
	ldi R18,9
	ldi R16,2
	xcall _LCD_Write_Word
	.dbline 89
; 	LCD_Write_Word(2,0x0B,Char_1616_DONG);
	ldi R24,<_Char_1616_DONG
	ldi R25,>_Char_1616_DONG
	std y+1,R25
	std y+0,R24
	ldi R18,11
	ldi R16,2
	xcall _LCD_Write_Word
	.dbline 90
; 	LCD_Write_Word(2,0x0D,Char_1616_HUI);
	ldi R24,<_Char_1616_HUI
	ldi R25,>_Char_1616_HUI
	std y+1,R25
	std y+0,R24
	ldi R18,13
	ldi R16,2
	xcall _LCD_Write_Word
	.dbline 91
; 	LCD_Write_Char(2,0x0F,Char_0816_0x00);
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,15
	ldi R16,2
	xcall _LCD_Write_Char
	.dbline 93
; 	
; 	LCD_Write_Char(3,0x08,Char_0816_0x00);
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,8
	ldi R16,3
	xcall _LCD_Write_Char
	.dbline 94
; 	LCD_Write_Char(3,0x09,Char_0816_0x00);
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,9
	ldi R16,3
	xcall _LCD_Write_Char
	.dbline 95
; 	LCD_Write_Word(3,0x0A,Char_1616_KAI);
	ldi R24,<_Char_1616_KAI
	ldi R25,>_Char_1616_KAI
	std y+1,R25
	std y+0,R24
	ldi R18,10
	ldi R16,3
	xcall _LCD_Write_Word
	.dbline 96
; 	LCD_Write_Word(3,0x0C,Char_1616_MU);
	ldi R24,<_Char_1616_MU
	ldi R25,>_Char_1616_MU
	std y+1,R25
	std y+0,R24
	ldi R18,12
	ldi R16,3
	xcall _LCD_Write_Word
	.dbline 97
; 	LCD_Write_Char(3,0x0E,Char_0816_0x21);
	ldi R24,<_Char_0816_0x21
	ldi R25,>_Char_0816_0x21
	std y+1,R25
	std y+0,R24
	ldi R18,14
	ldi R16,3
	xcall _LCD_Write_Char
	.dbline 98
; 	LCD_Write_Char(3,0x0F,Char_0816_0x00);			
	ldi R24,<_Char_0816_0x00
	ldi R25,>_Char_0816_0x00
	std y+1,R25
	std y+0,R24
	ldi R18,15
	ldi R16,3
	xcall _LCD_Write_Char
	.dbline -2
	.dbline 99
; }
L19:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_Write_Frame1 _LCD_Write_Frame1 fV
	.even
_LCD_Write_Frame1::
	sbiw R28,2
	.dbline -1
	.dbline 102
; 
; void LCD_Write_Frame1(void)
; {
	.dbline 103
; 	LCD_Write_Char(0,0x08,Char_0816_2);
	ldi R24,<_Char_0816_2
	ldi R25,>_Char_0816_2
	std y+1,R25
	std y+0,R24
	ldi R18,8
	clr R16
	xcall _LCD_Write_Char
	.dbline 104
; 	LCD_Write_Char(0,0x09,Char_0816_0);
	ldi R24,<_Char_0816_0
	ldi R25,>_Char_0816_0
	std y+1,R25
	std y+0,R24
	ldi R18,9
	clr R16
	xcall _LCD_Write_Char
	.dbline 105
; 	LCD_Write_Char(0,0x0A,Char_0816_0);
	ldi R24,<_Char_0816_0
	ldi R25,>_Char_0816_0
	std y+1,R25
	std y+0,R24
	ldi R18,10
	clr R16
	xcall _LCD_Write_Char
	.dbline 106
; 	LCD_Write_Char(0,0x0B,Char_0816_8);
	ldi R24,<_Char_0816_8
	ldi R25,>_Char_0816_8
	std y+1,R25
	std y+0,R24
	ldi R18,11
	clr R16
	xcall _LCD_Write_Char
	.dbline 107
; 	LCD_Write_Char(0,0x0C,Char_0816_0x3A);
	ldi R24,<_Char_0816_0x3A
	ldi R25,>_Char_0816_0x3A
	std y+1,R25
	std y+0,R24
	ldi R18,12
	clr R16
	xcall _LCD_Write_Char
	.dbline 108
; 	LCD_Write_Char(0,0x0D,Char_0816_8);
	ldi R24,<_Char_0816_8
	ldi R25,>_Char_0816_8
	std y+1,R25
	std y+0,R24
	ldi R18,13
	clr R16
	xcall _LCD_Write_Char
	.dbline 109
; 	LCD_Write_Char(0,0x0E,Char_0816_0x3A);
	ldi R24,<_Char_0816_0x3A

⌨️ 快捷键说明

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