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

📄 1602.lst

📁 1602液晶驱动程序
💻 LST
字号:
__start:
__text_start:
      39 E5CF      LDI	R28,0x5F
      3A E0D4      LDI	R29,4
      3B BFCD      OUT	0x3D,R28
      3C BFDE      OUT	0x3E,R29
      3D 51CE      SUBI	R28,0x1E
      3E 40D0      SBCI	R29,0
      3F EA0A      LDI	R16,0xAA
      40 8308      STD	Y+0,R16
      41 2400      CLR	R0
      42 E6E0      LDI	R30,0x60
      43 E0F0      LDI	R31,0
      44 E010      LDI	R17,0
      45 36E0      CPI	R30,0x60
      46 07F1      CPC	R31,R17
      47 F011      BEQ	0x004A
      48 9201      ST	R0,Z+
      49 CFFB      RJMP	0x0045
      4A 8300      STD	Z+0,R16
      4B E7E1      LDI	R30,0x71
      4C E0F0      LDI	R31,0
      4D E6A0      LDI	R26,0x60
      4E E0B0      LDI	R27,0
      4F E010      LDI	R17,0
      50 E000      LDI	R16,0
      51 BF0B      OUT	0x3B,R16
      52 37E1      CPI	R30,0x71
      53 07F1      CPC	R31,R17
      54 F021      BEQ	0x0059
      55 95C8      LPM
      56 9631      ADIW	R30,1
      57 920D      ST	R0,X+
      58 CFF9      RJMP	0x0052
      59 940E 0089 CALL	_main
_exit:
      5B CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
      5C 940E 00D8 CALL	push_xgsetF000
FILE: E:\训练\1602液晶\yejing.c
(0001) //ICC-AVR application builder : 2008-8-23 13:56:20
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004) // By:苏维孝
(0005) #include<iom16v.h>
(0006) #include<macros.h>
(0007) #define uchar unsigned char
(0008) #define uint unsigned int
(0009) #define ulong unsigned long
(0010) #pragma data:code 
(0011) const uchar table1[]="   Welcom to";
      5E 2744      CLR	R20
      5F 2755      CLR	R21
      60 C00B      RJMP	0x006C
(0012) uchar n1=0,n2=0;
      61 2766      CLR	R22
      62 2777      CLR	R23
      63 C002      RJMP	0x0066
      64 5F6F      SUBI	R22,0xFF
      65 4F7F      SBCI	R23,0xFF
      66 3765      CPI	R22,0x75
      67 E0E4      LDI	R30,4
      68 077E      CPC	R23,R30
      69 F3D0      BCS	0x0064
      6A 5F4F      SUBI	R20,0xFF
      6B 4F5F      SBCI	R21,0xFF
      6C 1740      CP	R20,R16
      6D 0751      CPC	R21,R17
      6E F390      BCS	0x0061
      6F 940C 00DD JMP	pop_xgsetF000
_write_com:
  com                  --> R10
      71 92AA      ST	R10,-Y
      72 2EA0      MOV	R10,R16
(0013) ulong xdata=0;
(0014) float sdata=0.0;
(0015) 
(0016) void delay(uint ms)//毫秒级延时程序
(0017) {
      73 98DD      CBI	0x1B,5
(0018)   uint i,j;
      74 98DE      CBI	0x1B,6
(0019)   for(i=0;i<ms;i++)
      75 BAA8      OUT	0x18,R10
(0020)     for(j=0;j<1141;j++);
      76 9ADF      SBI	0x1B,7
(0021) }
      77 E001      LDI	R16,1
      78 E010      LDI	R17,0
      79 DFE2      RCALL	_delay
(0022) 
      7A 98DF      CBI	0x1B,7
      7B 90A9      LD	R10,Y+
      7C 9508      RET
_write_dat:
  dat                  --> R10
      7D 92AA      ST	R10,-Y
      7E 2EA0      MOV	R10,R16
(0023) void write_com(uchar com)//写指令
(0024) {
(0025)  PORTA&=~BIT(5);
(0026)  PORTA&=~BIT(6);
(0027)  PORTD=com;
      7F 9ADD      SBI	0x1B,5
(0028)  PORTA|=BIT(7);
      80 98DE      CBI	0x1B,6
(0029)  delay(1);
      81 BAA8      OUT	0x18,R10
(0030)  PORTA&=~BIT(7); 
      82 9ADF      SBI	0x1B,7
(0031) }
      83 E001      LDI	R16,1
      84 E010      LDI	R17,0
      85 DFD6      RCALL	_delay
(0032) 
      86 98DF      CBI	0x1B,7
      87 90A9      LD	R10,Y+
      88 9508      RET
(0033) void write_dat(uchar dat)//写数据
(0034) {
(0035)  PORTA|=BIT(5);
(0036)  PORTA&=~BIT(6);
(0037)  PORTD=dat;
(0038)  PORTA|=BIT(7);
_main:
  i                    --> R20
      89 EF8F      LDI	R24,0xFF
      8A BB87      OUT	0x17,R24
(0039)  delay(1);
      8B B38A      IN	R24,0x1A
      8C 6E80      ORI	R24,0xE0
      8D BB8A      OUT	0x1A,R24
(0040)  PORTA&=~BIT(7);
      8E 98DF      CBI	0x1B,7
(0041) }
      8F E308      LDI	R16,0x38
      90 DFE0      RCALL	_write_com
(0042) 
      91 E005      LDI	R16,5
      92 E010      LDI	R17,0
      93 DFC8      RCALL	_delay
(0043) void port_init(void)
      94 E001      LDI	R16,1
      95 DFDB      RCALL	_write_com
(0044) {
      96 E005      LDI	R16,5
      97 E010      LDI	R17,0
      98 DFC3      RCALL	_delay
(0045)  DDRA|=BIT(0);
(0046)  PORTA&=~BIT(0);      //不分频
      99 E00C      LDI	R16,0xC
      9A DFD6      RCALL	_write_com
(0047)  DDRD=0XFF;
      9B E005      LDI	R16,5
      9C E010      LDI	R17,0
      9D DFBE      RCALL	_delay
(0048)  DDRA|=BIT(5)|BIT(6)|BIT(7);
      9E E006      LDI	R16,6
      9F DFD1      RCALL	_write_com
(0049)  PORTA&=~BIT(7);
      A0 E005      LDI	R16,5
      A1 E010      LDI	R17,0
      A2 DFB9      RCALL	_delay
(0050) }
      A3 E900      LDI	R16,0x90
      A4 DFCC      RCALL	_write_com
(0051) 
      A5 E005      LDI	R16,5
      A6 E010      LDI	R17,0
      A7 DFB4      RCALL	_delay
(0052) //TIMER0 initialize - prescale:1024
      A8 2744      CLR	R20
      A9 C00C      RJMP	0x00B6
(0053) // WGM: Normal
(0054) // desired value: 20mSec
      AA E584      LDI	R24,0x54
      AB E090      LDI	R25,0
      AC 2FE4      MOV	R30,R20
      AD 27FF      CLR	R31
      AE 0FE8      ADD	R30,R24
      AF 1FF9      ADC	R31,R25
      B0 9104      LPM	R16,0(Z)
      B1 DFCB      RCALL	_write_dat
(0055) // actual value: 19.968mSec (0.2%)
      B2 E005      LDI	R16,5
      B3 E010      LDI	R17,0
      B4 DFA7      RCALL	_delay
      B5 9543      INC	R20
      B6 304C      CPI	R20,0xC
      B7 F390      BCS	0x00AA
(0056) void timer0_init(void)
(0057) {
      B8 ED00      LDI	R16,0xD0
      B9 DFB7      RCALL	_write_com
(0058)  n1++;
      BA E005      LDI	R16,5
      BB E010      LDI	R17,0
      BC DF9F      RCALL	_delay
(0059)  if(n1==50)                                  //定时一秒中断服务函数
      BD 2744      CLR	R20
      BE C00C      RJMP	0x00CB
(0060)  {
(0061)   CLI();
      BF E681      LDI	R24,0x61
      C0 E090      LDI	R25,0
      C1 2FE4      MOV	R30,R20
      C2 27FF      CLR	R31
      C3 0FE8      ADD	R30,R24
      C4 1FF9      ADC	R31,R25
      C5 9104      LPM	R16,0(Z)
      C6 DFB6      RCALL	_write_dat
(0062)   n1=0;
      C7 E005      LDI	R16,5
      C8 E010      LDI	R17,0
      C9 DF92      RCALL	_delay
      CA 9543      INC	R20
      CB 304F      CPI	R20,0xF
      CC F390      BCS	0x00BF
(0063)   TCNT1H = 0x00;
(0064)   TCNT1L = 0x00;
      CD 2744      CLR	R20
      CE C006      RJMP	0x00D5
(0065)   xdata=TCNT1L+TCNT1H*256+n2*65536;
(0066)   n2=0;
      CF E10C      LDI	R16,0x1C
      D0 DFA0      RCALL	_write_com
(0067)   SEI();
FILE: <library>
      D1 EE06      LDI	R16,0xE6
      D2 E010      LDI	R17,0
      D3 DF88      RCALL	_delay
      D4 9543      INC	R20
      D5 3140      CPI	R20,0x10
      D6 F3C0      BCS	0x00CF
      D7 9508      RET
push_xgsetF000:
      D8 937A      ST	R23,-Y
      D9 936A      ST	R22,-Y
      DA 935A      ST	R21,-Y
      DB 934A      ST	R20,-Y
      DC 9508      RET
pop_xgsetF000:
      DD 9149      LD	R20,Y+
      DE 9159      LD	R21,Y+
      DF 9169      LD	R22,Y+
      E0 9179      LD	R23,Y+
      E1 9508      RET

⌨️ 快捷键说明

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