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

📄 ocmj_lcd.s

📁 mega128+时实时钟日期芯片ds1307的例子
💻 S
字号:
	.module ocmj_lcd.c
	.area text(rom, con, rel)
	.dbfile F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\ocmj_lcd.c
	.dbfunc e ocmj_init _ocmj_init fV
	.even
_ocmj_init::
	.dbline -1
	.dbline 6
; #include <iom128v.h>
; #include "ocmj_lcd.h" 
; #include "delay.h"
; /*     OCMJ4X8LCD初始化    */
;  void ocmj_init(void)
;     {
	.dbline 7
; 	 MCUCR=0;
	clr R2
	out 0x35,R2
	.dbline 8
; 	 DDRA=0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 9
; 	 PORTA=0xff;
	out 0x1b,R24
	.dbline 10
; 	 DDRE=0b10000000;
	ldi R24,128
	out 0x2,R24
	.dbline 11
; 	 PORTE=0xff;
	ldi R24,255
	out 0x3,R24
	.dbline 12
; 	 clr_reset;//LCD复位
	cbi 0x15,3
	.dbline 13
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 14
; 	 set_reset;
	sbi 0x15,3
	.dbline 15
; 	 clr_answer;
	cbi 0x03,7
	.dbline 16
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ocmj_write _ocmj_write fV
;           data -> R16
	.even
_ocmj_write::
	.dbline -1
	.dbline 20
; 	 }
; /*            写数据到LCD        */
;  void ocmj_write(unsigned char data)
;     {
L3:
	.dbline 22
L4:
	.dbline 21
; 	 while(ask!=0)
	sbic 0x1,6
	rjmp L3
	.dbline 23
; 	      ;
;      data_port=data;
	out 0x1b,R16
	.dbline 24
;    	 wait;
	nop
	 nop
	.dbline 25
; 	 set_answer;
	sbi 0x03,7
	.dbline 26
; 	 wait;
	nop
	 nop
L6:
	.dbline 28
L7:
	.dbline 27
; 	 while(ask==0)
	sbis 0x1,6
	rjmp L6
	.dbline 29
; 	      ;		  
; 	 clr_answer; 
	cbi 0x03,7
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e asc_tran _asc_tran fV
;          asc_p -> R20,R21
;              y -> R22
;              x -> R10
	.even
_asc_tran::
	xcall push_gset3
	mov R22,R18
	mov R10,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 34
;     }
; /*          传送ASCII字母到LCD            */
; /*          x:0x00~0x0f y:0~64            */	
; void asc_tran(unsigned char x,unsigned char y,unsigned char *asc_p)
;     {
	.dbline 35
; 	 x+=4;
	mov R24,R10
	subi R24,252    ; addi 4
	mov R10,R24
	xjmp L11
L10:
	.dbline 37
; 	 while((*asc_p)!=0)
; 	    {
	.dbline 38
; 		 ocmj_write(0xf1);
	ldi R16,241
	xcall _ocmj_write
	.dbline 39
; 		 ocmj_write(x);
	mov R16,R10
	xcall _ocmj_write
	.dbline 40
; 		 ocmj_write(y);
	mov R16,R22
	xcall _ocmj_write
	.dbline 41
; 		 ocmj_write(*asc_p);
	movw R30,R20
	ldd R16,z+0
	xcall _ocmj_write
	.dbline 42
; 		 asc_p++;
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 43
; 		 if (x<0x13) 
	mov R24,R10
	cpi R24,19
	brsh L13
	.dbline 44
; 		    x++;
	inc R10
	xjmp L14
L13:
	.dbline 46
; 		 else
; 		   {
	.dbline 47
; 		    x=0x04;
	ldi R24,4
	mov R10,R24
	.dbline 48
; 			y+=8;		    
	subi R22,248    ; addi 8
	.dbline 49
; 		   }	
L14:
	.dbline 50
L11:
	.dbline 36
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L10
	.dbline -2
L9:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r asc_p 20 pc
	.dbsym r y 22 c
	.dbsym r x 10 c
	.dbend

⌨️ 快捷键说明

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