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

📄 main.s

📁 ds1302事实时钟+12864液晶显示 4094
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
_charindex::
	.blkb 2
	.area idata
	.byte 48,49
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.blkb 2
	.area idata
	.byte 50,51
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.blkb 2
	.area idata
	.byte 52,53
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.blkb 2
	.area idata
	.byte 54,55
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.blkb 2
	.area idata
	.byte 56,57
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.blkb 1
	.area idata
	.byte 58
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.dbfile E:\AVR实验\ds1302+12864时钟\charindex.h
	.dbsym e charindex _charindex A[11:11]c
_mid::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\charindex.h
	.blkb 9
	.area idata
	.byte 0,0,0,0,0,0,0,0,0
	.area data(ram, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\charindex.h
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.dbsym e mid _mid A[10:10]c
	.area text(rom, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\main.c
	.dbfunc e jisuan _jisuan fV
;              d -> R20
;              e -> R22
;         b_data -> R16
	.even
_jisuan::
	st -y,R20
	st -y,R22
	.dbline -1
	.dbline 15
; #include <iom8515v.h>
; #include "ds1302.h"
; #include "jhd12864.h"
; #include "d4094.h"
; #include "charindex.h"
; 
; 
; 
; uint gewei,shiwei;
; uint sec,min,hour,year,month,day,date;
; uchar mid[10]={0};
; 
; 
; void jisuan(uchar b_data)
; {
	.dbline 17
;    uchar e,d;
;    e=b_data;
	mov R22,R16
	.dbline 18
;    d=e;
	mov R20,R22
	.dbline 19
;    e=e&0x0f;
	andi R22,15
	.dbline 20
;    d=d>>4;
	mov R24,R20
	swap R24
	andi R24,#0x0F
	mov R20,R24
	.dbline 21
;    gewei=(e&0x01)+((e>>1)&0x01)*2+((e>>2)&0x01)*4+((e>>3)&0x01)*8;
	mov R24,R22
	clr R25
	asr R25
	ror R24
	andi R24,1
	andi R25,0
	movw R2,R24
	lsl R2
	rol R3
	mov R24,R22
	clr R25
	andi R24,1
	andi R25,0
	movw R4,R24
	add R4,R2
	adc R5,R3
	mov R24,R22
	clr R25
	asr R25
	ror R24
	asr R25
	ror R24
	andi R24,1
	andi R25,0
	lsl R24
	rol R25
	lsl R24
	rol R25
	add R4,R24
	adc R5,R25
	mov R24,R22
	clr R25
	asr R25
	ror R24
	asr R25
	ror R24
	asr R25
	ror R24
	andi R24,1
	andi R25,0
	lsl R24
	rol R25
	lsl R24
	rol R25
	lsl R24
	rol R25
	add R4,R24
	adc R5,R25
	sts _gewei+1,R5
	sts _gewei,R4
	.dbline 22
;    shiwei=(d&0x01)+((d>>1)&0x01)*2+((d>>2)&0x01)*4+((d>>3)&0x01)*8; 
	mov R24,R20
	clr R25
	asr R25
	ror R24
	andi R24,1
	andi R25,0
	movw R2,R24
	lsl R2
	rol R3
	mov R24,R20
	clr R25
	andi R24,1
	andi R25,0
	movw R4,R24
	add R4,R2
	adc R5,R3
	mov R24,R20
	clr R25
	asr R25
	ror R24
	asr R25
	ror R24
	andi R24,1
	andi R25,0
	lsl R24
	rol R25
	lsl R24
	rol R25
	add R4,R24
	adc R5,R25
	mov R24,R20
	clr R25
	asr R25
	ror R24
	asr R25
	ror R24
	asr R25
	ror R24
	andi R24,1
	andi R25,0
	lsl R24
	rol R25
	lsl R24
	rol R25
	lsl R24
	rol R25
	add R4,R24
	adc R5,R25
	sts _shiwei+1,R5
	sts _shiwei,R4
	.dbline -2
L1:
	.dbline 0 ; func end
	ld R22,y+
	ld R20,y+
	ret
	.dbsym r d 20 c
	.dbsym r e 22 c
	.dbsym r b_data 16 c
	.dbend
	.dbfunc e main _main fV
;            num -> R20
	.even
_main::
	sbiw R28,4
	.dbline -1
	.dbline 29
; 
;    }
; 
;     
;    
; void main()
; {
	.dbline 31
; 
;    uchar num=0x01; 
	ldi R20,1
	.dbline 33
;  
;    DDRC=0xFF;
	ldi R24,255
	out 0x14,R24
	.dbline 34
;    PORTC=0xFF;
	out 0x15,R24
	.dbline 36
; 
;    LCD_Init();
	rcall _LCD_Init
	.dbline 37
;    delay_1ms(50);
	ldi R16,50
	ldi R17,0
	rcall _delay_1ms
	.dbline 38
;    LCD_Init();	 			//初始化两边是关键,否则液晶上电重起将不能显示
	rcall _LCD_Init
	.dbline 40
; 	
;   WriteSec(0x50);
	ldi R16,80
	ldi R17,0
	rcall _WriteSec
	.dbline 41
;   WriteMin(0x59);
	ldi R16,89
	ldi R17,0
	rcall _WriteMin
	.dbline 42
;   WriteHour(0x23);
	ldi R16,35
	ldi R17,0
	rcall _WriteHour
	.dbline 43
;   WriteYear(0x99);
	ldi R16,153
	ldi R17,0
	rcall _WriteYear
	.dbline 44
;   WriteMonth(0x12);
	ldi R16,18
	ldi R17,0
	rcall _WriteMonth
	.dbline 45
;   WriteDate(0x31);
	ldi R16,49
	ldi R17,0
	rcall _WriteDate
	.dbline 47
;   
;   WriteDay(0x07);
	ldi R16,7
	ldi R17,0
	rcall _WriteDay
	.dbline 49
;   
;   Char_Set_XY(1,0,"time");
	ldi R24,<L3
	ldi R25,>L3
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,1
	ldi R17,0
	rcall _Char_Set_XY
	.dbline 50
;   Char_Set_XY(1,1,"date");
	ldi R24,<L4
	ldi R25,>L4
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R19,0
	ldi R16,1
	ldi R17,0
	rcall _Char_Set_XY
	.dbline 51
;   Char_Set_XY(1,2,"week");
	ldi R24,<L5
	ldi R25,>L5
	std y+1,R25
	std y+0,R24
	ldi R18,2
	ldi R19,0
	ldi R16,1
	ldi R17,0
	rcall _Char_Set_XY
	.dbline 54
;   
;  
;   Char_Set_XY_BYTE(6,0,charindex[10],2);
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	lds R2,_charindex+10
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,6
	ldi R17,0
	rcall _Char_Set_XY_BYTE
	.dbline 55
;   Char_Set_XY_BYTE(5,0,charindex[10],1);
	ldi R24,1
	ldi R25,0
	std y+3,R25
	std y+2,R24
	lds R2,_charindex+10
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,5
	ldi R17,0
	rcall _Char_Set_XY_BYTE
	.dbline 56
;   Char_Set_XY_BYTE(6,1,charindex[10],2);
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	lds R2,_charindex+10
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	ldi R16,6
	ldi R17,0
	rcall _Char_Set_XY_BYTE
	.dbline 57
;   Char_Set_XY_BYTE(5,1,charindex[10],1);  
	ldi R24,1
	ldi R25,0
	std y+3,R25
	std y+2,R24
	lds R2,_charindex+10
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	ldi R16,5
	ldi R17,0
	rcall _Char_Set_XY_BYTE
	rjmp L11
L10:
	.dbline 60
;  
; while(1)
; {
	.dbline 63
; 
;   
; 	    sec=ReadSec();
	rcall _ReadSec
	sts _sec+1,R17
	sts _sec,R16
	.dbline 64
;         if(mid[1]!=sec)
	lds R4,_mid+1
	clr R5
	cp R4,R16
	cpc R5,R17
	brne X9
	rjmp L13
X9:
X0:
	.dbline 65
; 		{
	.dbline 66
; 		  num++;
	inc R20
	.dbline 67
; 		  if(num>0x02)num=0x01;
	ldi R24,2
	cp R24,R20
	brsh L16
X1:
	.dbline 67
	ldi R20,1
L16:
	.dbline 68
; 		  jisuan(sec);
	lds R16,_sec
	rcall _jisuan
	.dbline 69
; 		  Char_Set_XY_BYTE(7,0,charindex[gewei],2);
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,<_charindex
	ldi R25,>_charindex
	lds R30,_gewei
	lds R31,_gewei+1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,7
	ldi R17,0
	rcall _Char_Set_XY_BYTE
	.dbline 70
; 		  Char_Set_XY_BYTE(7,0,charindex[shiwei],1);
	ldi R24,1
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,<_charindex
	ldi R25,>_charindex
	lds R30,_shiwei
	lds R31,_shiwei+1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,7
	ldi R17,0
	rcall _Char_Set_XY_BYTE
	.dbline 71
; 		  Char_Set_XY_BYTE(0,3,num,1);
	ldi R24,1
	ldi R25,0
	std y+3,R25
	std y+2,R24
	mov R2,R20
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,3
	ldi R19,0
	clr R16
	clr R17
	rcall _Char_Set_XY_BYTE
	.dbline 72
; 	     }
L13:
	.dbline 73
; 		 mid[1]=sec;
	lds R2,_sec
	lds R3,_sec+1
	sts _mid+1,R2
	.dbline 76
; 		 
; 		 
; 		min = ReadMin();
	rcall _ReadMin
	sts _min+1,R17
	sts _min,R16
	.dbline 77
; 		if(mid[2]!=min)
	lds R4,_mid+2
	clr R5
	cp R4,R16
	cpc R5,R17
	brne X10
	rjmp L19
X10:
X2:
	.dbline 78
; 		{
	.dbline 79
;         jisuan(min);
	rcall _jisuan

⌨️ 快捷键说明

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