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

📄 12864.s

📁 数显温度万年历
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module _12864.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
	.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864_chuankou_drive.h
	.dbfunc e delay_us _delay_us fV
;              t -> R16,R17
	.even
_delay_us::
	.dbline -1
	.dbline 21
; #include<iom8v.h>
; #include<macros.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define CS_0 PORTD&=~(1<<PDD4)                                         //片选RS
; #define CS_1 PORTD|=(1<<PD4)
; #define SID_0 PORTD&=~(1<<PD5)                                         //数据 RW
; #define SID_1 PORTD|=(1<<PD5)                       
; #define SCLK_0 PORTD&=~(1<<PD6)                                        //时钟 E
; #define SCLK_1 PORTD|=(1<<PD6)
; #define RST_0 PORTD&=~(1<<PD7)                                         //复位  RST
; #define RST_1 PORTD|=(1<<PD7)            
; /**********************函数声明***************************************/
; void delay_us(int t);
; void delay_ms(unsigned int t);
; void send_byte(uchar bbyte);
; void lcd_wcmd(uchar cmd);
; void lcd_wdat(uchar dat);
; //*******************延时 us 8****************************************
; void delay_us(int t)
; {
L2:
	.dbline 23
; do
;    t--;
	subi R16,1
	sbci R17,0
L3:
	.dbline 24
; while(t>1);
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r t 16 I
	.dbend
	.dbfunc e delay_ms _delay_ms fV
;              t -> R20,R21
	.even
_delay_ms::
	st -y,R20
	st -y,R21
	movw R20,R16
	.dbline -1
	.dbline 28
; }
; //*******************延时  ms *****************************************
; void delay_ms(unsigned int t)
; {
	rjmp L7
L6:
	.dbline 30
; while(t!=0)
; {
	.dbline 31
; delay_us(1142);
	ldi R16,1142
	ldi R17,4
	rcall _delay_us
	.dbline 32
; t--;}
	subi R20,1
	sbci R21,0
	.dbline 32
L7:
	.dbline 29
	cpi R20,0
	cpc R20,R21
	brne L6
X1:
	.dbline -2
L5:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r t 20 i
	.dbend
	.dbfunc e send_byte _send_byte fV
;              i -> R20
;          bbyte -> R16
	.even
_send_byte::
	st -y,R20
	.dbline -1
	.dbline 36
; }
; /*********************发送1字节函数****************************/
; void send_byte(uchar bbyte)
; {
	.dbline 38
;     uchar i;
; 	for(i=0;i<8;i++)
	clr R20
	rjmp L13
L10:
	.dbline 39
; 	{
	.dbline 40
;         if(bbyte&0X80)
	sbrs R16,7
	rjmp L14
X2:
	.dbline 41
; 		    {SID_1;}
	.dbline 41
	sbi 0x12,5
	.dbline 41
	rjmp L15
L14:
	.dbline 43
; 		else 
; 			{SID_0;}
	.dbline 43
	cbi 0x12,5
	.dbline 43
L15:
	.dbline 44
; 		SCLK_1;
	sbi 0x12,6
	.dbline 45
; 		SCLK_0;
	cbi 0x12,6
	.dbline 46
; 		bbyte<<=1;	
	lsl R16
	.dbline 47
; 	}
L11:
	.dbline 38
	inc R20
L13:
	.dbline 38
	cpi R20,8
	brlo L10
X3:
	.dbline -2
L9:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r i 20 c
	.dbsym r bbyte 16 c
	.dbend
	.dbfunc e lcd_wcmd _lcd_wcmd fV
;          Ldata -> R20
;          Hdata -> R22
;      star_data -> R10
;            cmd -> R20
	.even
_lcd_wcmd::
	rcall push_xgsetF00C
	mov R20,R16
	.dbline -1
	.dbline 51
; }
; /************************写命令函数**********************************/
; void lcd_wcmd(uchar cmd)
; {
	.dbline 53
;     uchar star_data,Hdata,Ldata;
; 	star_data=0XF8;
	ldi R24,248
	mov R10,R24
	.dbline 54
; 	Hdata=cmd&0XF0;
	mov R22,R20
	andi R22,240
	.dbline 55
; 	Ldata=(cmd<<4)&0XF0;
	mov R24,R20
	andi R24,#0x0F
	swap R24
	andi R24,240
	mov R20,R24
	.dbline 56
; 	send_byte(star_data);
	mov R16,R10
	rcall _send_byte
	.dbline 57
; 	delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	.dbline 58
; 	send_byte(Hdata);
	mov R16,R22
	rcall _send_byte
	.dbline 59
; 	delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	.dbline 60
;     send_byte(Ldata);
	mov R16,R20
	rcall _send_byte
	.dbline 61
; 	delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	.dbline -2
L16:
	.dbline 0 ; func end
	rjmp pop_xgsetF00C
	.dbsym r Ldata 20 c
	.dbsym r Hdata 22 c
	.dbsym r star_data 10 c
	.dbsym r cmd 20 c
	.dbend
	.dbfunc e lcd_wdat _lcd_wdat fV
;          Ldata -> R20
;          Hdata -> R22
;      star_data -> R10
;            dat -> R20
	.even
_lcd_wdat::
	rcall push_xgsetF00C
	mov R20,R16
	.dbline -1
	.dbline 65
; }
; /**************************写数据函数***************************************/
; void lcd_wdat(uchar dat)
; {
	.dbline 67
;     uchar star_data,Hdata,Ldata;
; 	star_data=0XFA;
	ldi R24,250
	mov R10,R24
	.dbline 68
; 	Hdata=dat&0XF0;
	mov R22,R20
	andi R22,240
	.dbline 69
; 	Ldata=(dat<<4)&0XF0;
	mov R24,R20
	andi R24,#0x0F
	swap R24
	andi R24,240
	mov R20,R24
	.dbline 70
; 	send_byte(star_data);
	mov R16,R10
	rcall _send_byte
	.dbline 71
; 	delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	.dbline 72
; 	send_byte(Hdata);
	mov R16,R22
	rcall _send_byte
	.dbline 73
; 	delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	.dbline 74
;     send_byte(Ldata);
	mov R16,R20
	rcall _send_byte
	.dbline 75
; 	delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	.dbline -2
L17:
	.dbline 0 ; func end
	rjmp pop_xgsetF00C
	.dbsym r Ldata 20 c
	.dbsym r Hdata 22 c
	.dbsym r star_data 10 c
	.dbsym r dat 20 c
	.dbend
	.dbfunc e lcd_init _lcd_init fV
	.even
_lcd_init::
	.dbline -1
	.dbline 80
; 	
; }
; /**************************初始化函数*************************************/
; void lcd_init(void)
; {
	.dbline 82
;     //PSB_0;
; 	RST_0;
	cbi 0x12,7
	.dbline 83
; 	delay_ms(3);
	ldi R16,3
	ldi R17,0
	rcall _delay_ms
	.dbline 84
;     RST_1;
	sbi 0x12,7
	.dbline 85
; 	delay_ms(3);
	ldi R16,3
	ldi R17,0
	rcall _delay_ms
	.dbline 86
; 	CS_1;
	sbi 0x12,4
	.dbline 87
; 	lcd_wcmd(0X34);
	ldi R16,52
	rcall _lcd_wcmd
	.dbline 88
; 	delay_ms(5);
	ldi R16,5
	ldi R17,0
	rcall _delay_ms
	.dbline 89
; 	lcd_wcmd(0X30);
	ldi R16,48
	rcall _lcd_wcmd
	.dbline 90
; 	delay_ms(5);
	ldi R16,5
	ldi R17,0
	rcall _delay_ms
	.dbline 91
; 	lcd_wcmd(0X0C);
	ldi R16,12
	rcall _lcd_wcmd
	.dbline 92
; 	delay_ms(5);
	ldi R16,5
	ldi R17,0
	rcall _delay_ms
	.dbline 93
; 	lcd_wcmd(0X01);
	ldi R16,1
	rcall _lcd_wcmd
	.dbline 94
; 	delay_ms(5);
	ldi R16,5
	ldi R17,0
	rcall _delay_ms
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcd_clr _lcd_clr fV
	.even
_lcd_clr::
	.dbline -1
	.dbline 99
; 	
; }
; /********************清屏*********************/
; void lcd_clr(void)
; {
	.dbline 100
;     lcd_wcmd(0X01);
	ldi R16,1
	rcall _lcd_wcmd
	.dbline 101
; 	delay_ms(5);
	ldi R16,5
	ldi R17,0
	rcall _delay_ms
	.dbline -2
L19:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e locatexy _locatexy fV
;              y -> R22
;              x -> R20
	.even
_locatexy::
	st -y,R20
	st -y,R22
	mov R22,R18
	mov R20,R16
	.dbline -1
	.dbline 105
; }
; /********************位置定义***********************/
; void locatexy(uchar x,uchar y)
; {
	.dbline 106
;     if(y==0){lcd_wcmd(0X80+x);}
	tst R22
	brne L21
X4:
	.dbline 106
	.dbline 106
	mov R16,R20
	subi R16,128    ; addi 128
	rcall _lcd_wcmd
	.dbline 106
	rjmp L22
L21:
	.dbline 107
; 	else if(y==1){lcd_wcmd(0X90+x);}
	cpi R22,1
	brne L23
X5:
	.dbline 107
	.dbline 107
	mov R16,R20
	subi R16,112    ; addi 144
	rcall _lcd_wcmd
	.dbline 107
	rjmp L24
L23:
	.dbline 108
; 	else if(y==2){lcd_wcmd(0X88+x);}
	cpi R22,2
	brne L25
X6:
	.dbline 108
	.dbline 108
	mov R16,R20
	subi R16,120    ; addi 136
	rcall _lcd_wcmd
	.dbline 108
	rjmp L26
L25:
	.dbline 109
; 	else if(y==3){lcd_wcmd(0X98+x);}
	cpi R22,3
	brne L27
X7:
	.dbline 109
	.dbline 109
	mov R16,R20
	subi R16,104    ; addi 152
	rcall _lcd_wcmd
	.dbline 109
L27:
L26:
L24:
L22:
	.dbline -2
L20:
	.dbline 0 ; func end
	ld R22,y+
	ld R20,y+
	ret
	.dbsym r y 22 c
	.dbsym r x 20 c
	.dbend
	.dbfunc e lcd_write_str _lcd_write_str fV
;              s -> R20,R21
;              y -> R12
;              x -> R10
	.even
_lcd_write_str::
	rcall push_xgset303C
	mov R12,R18
	mov R10,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 113
; }
; /********************显示内容***********************/
; void lcd_write_str(uchar x,uchar y,uchar *s)
; {
	.dbline 114
;     locatexy(x,y);
	mov R18,R12
	mov R16,R10
	rcall _locatexy
	rjmp L31
L30:
	.dbline 116
; 	while(*s)
; 	{
	.dbline 117
; 	    lcd_wdat(*s);
	movw R30,R20
	ldd R16,z+0
	rcall _lcd_wdat
	.dbline 118
; 		s++;
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 119
; 	}
L31:
	.dbline 115
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L30
X8:
	.dbline -2

⌨️ 快捷键说明

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