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

📄 lcd-m8.lst

📁 AVR ICC基于AVR MEGA8单片机的LCD程序!
💻 LST
📖 第 1 页 / 共 4 页
字号:
    040A DD73      RCALL	_setx
(0322) 	  //*读取数据
(0323) 	//  IN_DBUS();  /*设置为输入
(0324) 	  DI1;	  //*数据模式*
    040B 9A5A      SBI	0x0B,2
(0325) 	  RW1;	  //*读操作*
    040C 9A5B      SBI	0x0B,3
(0326) 	  //*第一次读
(0327) 	  E0;
    040D 985C      CBI	0x0B,4
(0328) 	  del(1);	//*延迟1us
    040E E001      LDI	R16,1
    040F E010      LDI	R17,0
    0410 DCF5      RCALL	_del
(0329) 	  E1;
    0411 9A5C      SBI	0x0B,4
(0330) 	  del(1);
    0412 E001      LDI	R16,1
    0413 E010      LDI	R17,0
    0414 DCF1      RCALL	_del
(0331) 	  E0;
    0415 985C      CBI	0x0B,4
(0332) 	  del(1);
    0416 E001      LDI	R16,1
    0417 E010      LDI	R17,0
    0418 DCED      RCALL	_del
(0333) 	  //*第二次读*
(0334) 	  E0;
    0419 985C      CBI	0x0B,4
(0335) 	  del(1);	//*延迟1us
    041A E001      LDI	R16,1
    041B E010      LDI	R17,0
    041C DCE9      RCALL	_del
(0336) 	  E1;
    041D 9A5C      SBI	0x0B,4
(0337) 	  del(5);
    041E E005      LDI	R16,5
    041F E010      LDI	R17,0
    0420 DCE5      RCALL	_del
(0338) 	  c=PIND;
    0421 B149      IN	R20,0x09
(0339) 	  E0;
    0422 985C      CBI	0x0B,4
(0340) 	  del(1);
    0423 E001      LDI	R16,1
    0424 E010      LDI	R17,0
    0425 DCE0      RCALL	_del
(0341) 	  //***********
(0342) 	  RW0;
    0426 985B      CBI	0x0B,3
(0343) 	  OUT_DBUS();
    0427 EF8F      LDI	R24,0xFF
    0428 B984      OUT	0x04,R24
(0344) 	  return c;
    0429 2F04      MOV	R16,R20
    042A D0C5      RCALL	pop_gset2
    042B 9508      RET
_write_p:
  c                    --> R10
  i                    --> Y+7
  y                    --> R20
  x                    --> R22
    042C D0CF      RCALL	push_gset3
    042D 2F42      MOV	R20,R18
    042E 2F60      MOV	R22,R16
    042F 9721      SBIW	R28,1
(0345) }
(0346) 
(0347) void write_p(uchar x,uchar y,uchar i)
(0348) {
(0349) 	uchar c;
(0350) 	//*read_x里面用的参数就是第二屏幕的,置操作第二屏幕*
(0351) 	c=read_x((uchar)(x>>3),y);
    0430 2F24      MOV	R18,R20
    0431 2F06      MOV	R16,R22
    0432 2711      CLR	R17
    0433 9515      ASR	R17
    0434 9507      ROR	R16
    0435 9515      ASR	R17
    0436 9507      ROR	R16
    0437 9515      ASR	R17
    0438 9507      ROR	R16
    0439 DFCA      RCALL	_read_x
    043A 2EA0      MOV	R10,R16
(0352) 	if(i=='\0')
    043B 800F      LDD	R0,Y+7
    043C 2000      TST	R0
    043D F441      BNE	0x0446
(0353) 	{
(0354) 		c&=~(1<<(x&7));
    043E 2F16      MOV	R17,R22
    043F 7017      ANDI	R17,7
    0440 E001      LDI	R16,1
    0441 D0D5      RCALL	lsl8
    0442 2E20      MOV	R2,R16
    0443 9420      COM	R2
    0444 20A2      AND	R10,R2
(0355) 	}
    0445 C00E      RJMP	0x0454
(0356) 	else if(i=='\1')
    0446 818F      LDD	R24,Y+7
    0447 3081      CPI	R24,1
    0448 F431      BNE	0x044F
(0357) 	{
(0358) 		c|=(1<<(x&7));
    0449 2F16      MOV	R17,R22
    044A 7017      ANDI	R17,7
    044B E001      LDI	R16,1
    044C D0CA      RCALL	lsl8
    044D 2AA0      OR	R10,R16
(0359) 	}
    044E C005      RJMP	0x0454
(0360) 	else
(0361) 	{
(0362) 		c^=(1<<(x&7));
    044F 2F16      MOV	R17,R22
    0450 7017      ANDI	R17,7
    0451 E001      LDI	R16,1
    0452 D0C4      RCALL	lsl8
    0453 26A0      EOR	R10,R16
(0363) 	}
(0364) 	w8(y,(uchar)(x>>3),c);
    0454 82A8      STD	Y+0,R10
    0455 2F26      MOV	R18,R22
    0456 2733      CLR	R19
    0457 9535      ASR	R19
    0458 9527      ROR	R18
    0459 9535      ASR	R19
    045A 9527      ROR	R18
    045B 9535      ASR	R19
    045C 9527      ROR	R18
    045D 2F04      MOV	R16,R20
    045E DD2F      RCALL	_w8
    045F 9621      ADIW	R28,1
    0460 D091      RCALL	pop_gset3
    0461 9508      RET
(0365) 
(0366) }
(0367) 
(0368) void initlcd(void)
(0369) {
(0370) CS1_1; CS2_1;
_initlcd:
    0462 9A5D      SBI	0x0B,5
    0463 9A5E      SBI	0x0B,6
(0371) restlcd();
    0464 DCF1      RCALL	_restlcd
(0372) lcdoff();
    0465 DD00      RCALL	_lcdoff
(0373) lcdon();
    0466 DCF9      RCALL	_lcdon
(0374) fromx(0);
    0467 2700      CLR	R16
    0468 DD03      RCALL	_fromx
(0375) clrlcd();
    0469 DD30      RCALL	_clrlcd
    046A 9508      RET
FILE: D:\ele\AVR\ICC\LCD\lcd-M8\LCD_M8.c
(0001) #include <iom48v.h>
(0002) #include <macros.h>
(0003) #include <stdlib.h>
(0004) #include <eeprom.h>
(0005) #include <math.h>
(0006) #include "head.h"
(0007) #include "lcd.h"
(0008) 
(0009) #define MENU 6 
(0010) 
(0011) 
(0012) 
(0013) #define verify1 0x0a
(0014) #define verify2 0x46
(0015) 
(0016) #define T 490    //检测周期
(0017) #define addr 01  //address
(0018) 
(0019) 
(0020) 
(0021) 
(0022) void port_init(void)
(0023) {
(0024)  PORTB = 0x00;
_port_init:
    046B 2422      CLR	R2
    046C B825      OUT	0x05,R2
(0025)  DDRB  = 0xFF;
    046D EF8F      LDI	R24,0xFF
    046E B984      OUT	0x04,R24
(0026)  PORTC = 0x00; //m103 output only
    046F B828      OUT	0x08,R2
(0027)  DDRC  = 0x00;
    0470 B827      OUT	0x07,R2
(0028)  PORTD = 0x00;
    0471 B82B      OUT	0x0B,R2
(0029)  DDRD  = 0xff;
    0472 B98A      OUT	0x0A,R24
    0473 9508      RET
(0030) }
(0031) 
(0032) //call this routine to initialize all peripherals
(0033) void init_devices(void)
(0034) {
(0035)  //stop errant interrupts until set up
(0036)  CLI(); //disable all interrupts
_init_devices:
    0474 94F8      BCLR	7
(0037)  port_init();
    0475 DFF5      RCALL	_port_init
(0038) 
(0039)  MCUCR = 0x00;
    0476 2422      CLR	R2
    0477 BE25      OUT	0x35,R2
(0040)  EICRA = 0x00; //extended ext ints
    0478 92200069  STS	0x69,R2
(0041)  EIMSK = 0x00;
    047A BA2D      OUT	0x1D,R2
(0042)  
(0043)  TIMSK0 = 0x00; //timer 0 interrupt sources
    047B 9220006E  STS	0x6E,R2
(0044)  TIMSK1 = 0x00; //timer 1 interrupt sources
    047D 9220006F  STS	0x6F,R2
(0045)  TIMSK2 = 0x00; //timer 2 interrupt sources
    047F 92200070  STS	0x70,R2
(0046)  
(0047)  PCMSK0 = 0x00; //pin change mask 0 
    0481 9220006B  STS	0x6B,R2
(0048)  PCMSK1 = 0x00; //pin change mask 1 
    0483 9220006C  STS	0x6C,R2
(0049)  PCMSK2 = 0x00; //pin change mask 2
    0485 9220006D  STS	0x6D,R2
(0050)  PCICR = 0x00; //pin change enable 
    0487 92200068  STS	0x68,R2
(0051)  PRR = 0x00; //power controller
    0489 92200064  STS	0x64,R2
(0052)  SEI(); //re-enable interrupts
    048B 9478      BSET	7
    048C 9508      RET
_main:
  i                    --> R20
    048D 9722      SBIW	R28,2
(0053)  //all peripherals are now initialized
(0054) }
(0055) 
(0056) 
(0057) 
(0058) void main(void)
(0059) {
(0060) char i;
(0061) 
(0062) delay(100);
    048E E604      LDI	R16,0x64
    048F E010      LDI	R17,0
    0490 DC87      RCALL	_delay
(0063) init_devices(); 
    0491 DFE2      RCALL	_init_devices
(0064) 
(0065) //initlcd();
(0066) disen_row(16,3,"---WECOME---");
    0492 E089      LDI	R24,0x9
    0493 E091      LDI	R25,1
    0494 8399      STD	Y+1,R25
    0495 8388      STD	Y+0,R24
    0496 E023      LDI	R18,3
    0497 E100      LDI	R16,0x10
    0498 DE54      RCALL	_disen_row
(0067) delay(10000);
    0499 E100      LDI	R16,0x10
    049A E217      LDI	R17,0x27
    049B DC7C      RCALL	_delay
    049C C017      RJMP	0x04B4
(0068) while(1)
(0069) {
(0070) i=disen_row(25,3,"4.");  disen_row(i+1,3,"B1000");  break;
    049D E086      LDI	R24,6
    049E E091      LDI	R25,1
    049F 8399      STD	Y+1,R25
    04A0 8388      STD	Y+0,R24
    04A1 E023      LDI	R18,3
    04A2 E109      LDI	R16,0x19
    04A3 DE49      RCALL	_disen_row
    04A4 2F40      MOV	R20,R16
    04A5 E080      LDI	R24,0
    04A6 E091      LDI	R25,1
    04A7 8399      STD	Y+1,R25
    04A8 8388      STD	Y+0,R24
    04A9 E023      LDI	R18,3
    04AA 5F0F      SUBI	R16,0xFF
    04AB DE41      RCALL	_disen_row
    04AC C008      RJMP	0x04B5
(0071) WDR();
    04AD 95A8      WDR
(0072) PORTB =~PORTB ;
    04AE B025      IN	R2,0x05
    04AF 9420      COM	R2
    04B0 B825      OUT	0x05,R2
(0073) delay(100);
FILE: <library>
    04B1 E604      LDI	R16,0x64
    04B2 E010      LDI	R17,0
    04B3 DC64      RCALL	_delay
    04B4 CFE8      RJMP	0x049D
    04B5 9622      ADIW	R28,2
    04B6 9508      RET
push_arg4:
    04B7 933A      ST	R19,-Y
    04B8 932A      ST	R18,-Y
push_arg2:
    04B9 931A      ST	R17,-Y
    04BA 930A      ST	R16,-Y
    04BB 9508      RET
mod16u:
    04BC 9468      BSET	6
    04BD C001      RJMP	xdiv16u
div16u:
    04BE 94E8      BCLR	6
xdiv16u:
    04BF 92EA      ST	R14,-Y
    04C0 92FA      ST	R15,-Y
    04C1 938A      ST	R24,-Y
    04C2 24EE      CLR	R14
    04C3 24FF      CLR	R15
    04C4 E180      LDI	R24,0x10
    04C5 0F00      LSL	R16
    04C6 1F11      ROL	R17
    04C7 1CEE      ROL	R14
    04C8 1CFF      ROL	R15
    04C9 16E2      CP	R14,R18
    04CA 06F3      CPC	R15,R19
    04CB F018      BCS	0x04CF
    04CC 1AE2      SUB	R14,R18
    04CD 0AF3      SBC	R15,R19
    04CE 9503      INC	R16
    04CF 958A      DEC	R24
    04D0 F7A1      BNE	0x04C5
    04D1 F416      BRTC	0x04D4
    04D2 2D0E      MOV	R16,R14
    04D3 2D1F      MOV	R17,R15
    04D4 9189      LD	R24,Y+
    04D5 90F9      LD	R15,Y+
    04D6 90E9      LD	R14,Y+
    04D7 9508      RET
mod8u:
    04D8 9468      BSET	6
    04D9 C001      RJMP	xdiv8u
div8u:
    04DA 94E8      BCLR	6
xdiv8u:
    04DB 932A      ST	R18,-Y
    04DC 92FA      ST	R15,-Y
    04DD 92EA      ST	R14,-Y
    04DE 24FF      CLR	R15
    04DF 24EE      CLR	R14
    04E0 E120      LDI	R18,0x10
    04E1 0F00      LSL	R16
    04E2 1CFF      ROL	R15
    04E3 1CEE      ROL	R14
    04E4 16E1      CP	R14,R17
    04E5 F010      BCS	0x04E8
    04E6 1AE1      SUB	R14,R17
    04E7 9503      INC	R16
    04E8 952A      DEC	R18
    04E9 F7B9      BNE	0x04E1
    04EA F40E      BRTC	0x04EC
    04EB 2D0E      MOV	R16,R14
    04EC 90E9      LD	R14,Y+
    04ED 90F9      LD	R15,Y+
    04EE 9129      LD	R18,Y+
    04EF 9508      RET
pop_gset2:
    04F0 E0E2      LDI	R30,2
    04F1 C012      RJMP	pop
pop_gset3:
    04F2 E0E4      LDI	R30,4
    04F3 C010      RJMP	pop
pop_gset4:
    04F4 E0E8      LDI	R30,0x8
    04F5 C00E      RJMP	pop
pop_gset5:
    04F6 27EE      CLR	R30
    04F7 C00C      RJMP	pop
push_gset5:
    04F8 92FA      ST	R15,-Y
    04F9 92EA      ST	R14,-Y
push_gset4:
    04FA 92DA      ST	R13,-Y
    04FB 92CA      ST	R12,-Y
push_gset3:
    04FC 92BA      ST	R11,-Y
    04FD 92AA      ST	R10,-Y
push_gset2:
    04FE 937A      ST	R23,-Y
    04FF 936A      ST	R22,-Y
push_gset1:
    0500 935A      ST	R21,-Y
    0501 934A      ST	R20,-Y
    0502 9508      RET
pop_gset1:
    0503 E0E1      LDI	R30,1
pop:
    0504 9149      LD	R20,Y+
    0505 9159      LD	R21,Y+
    0506 FDE0      SBRC	R30,0
    0507 9508      RET
    0508 9169      LD	R22,Y+
    0509 9179      LD	R23,Y+
    050A FDE1      SBRC	R30,1
    050B 9508      RET
    050C 90A9      LD	R10,Y+
    050D 90B9      LD	R11,Y+
    050E FDE2      SBRC	R30,2
    050F 9508      RET
    0510 90C9      LD	R12,Y+
    0511 90D9      LD	R13,Y+
    0512 FDE3      SBRC	R30,3
    0513 9508      RET
    0514 90E9      LD	R14,Y+
    0515 90F9      LD	R15,Y+
    0516 9508      RET
lsl8:
    0517 2311      TST	R17
    0518 F019      BEQ	0x051C
    0519 0F00      LSL	R16
    051A 951A      DEC	R17
    051B CFFB      RJMP	lsl8
    051C 9508      RET
asgncblk:
    051D 93AA      ST	R26,-Y
    051E 93BA      ST	R27,-Y
    051F 93EA      ST	R30,-Y
    0520 93FA      ST	R31,-Y
    0521 920A      ST	R0,-Y
    0522 81AF      LDD	R26,Y+7
    0523 85B8      LDD	R27,Y+8
    0524 81ED      LDD	R30,Y+5
    0525 81FE      LDD	R31,Y+6
    0526 3000      CPI	R16,0
    0527 0701      CPC	R16,R17
    0528 F031      BEQ	0x052F
    0529 95C8      LPM
    052A 920D      ST	R0,X+
    052B 9631      ADIW	R30,1
    052C 5001      SUBI	R16,1
    052D 4010      SBCI	R17,0
    052E CFF7      RJMP	0x0526
    052F 9009      LD	R0,Y+
    0530 91F9      LD	R31,Y+
    0531 91E9      LD	R30,Y+
    0532 91B9      LD	R27,Y+
    0533 91A9      LD	R26,Y+
    0534 9624      ADIW	R28,4
    0535 9508      RET

⌨️ 快捷键说明

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