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

📄 adc.lst

📁 液晶屏源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
      3A E5CF      LDI	R28,0x5F
      3B E0D4      LDI	R29,4
      3C BFCD      OUT	0x3D,R28
      3D BFDE      OUT	0x3E,R29
      3E 51CE      SUBI	R28,0x1E
      3F 40D0      SBCI	R29,0
      40 EA0A      LDI	R16,0xAA
      41 8308      STD	Y+0,R16
      42 2400      CLR	R0
      43 E7EF      LDI	R30,0x7F
      44 E0F0      LDI	R31,0
      45 E010      LDI	R17,0
      46 37EF      CPI	R30,0x7F
      47 07F1      CPC	R31,R17
      48 F011      BEQ	0x004B
      49 9201      ST	R0,Z+
      4A CFFB      RJMP	0x0046
      4B 8300      STD	Z+0,R16
      4C E5E4      LDI	R30,0x54
      4D E0F0      LDI	R31,0
      4E E6A0      LDI	R26,0x60
      4F E0B0      LDI	R27,0
      50 E010      LDI	R17,0
      51 E000      LDI	R16,0
      52 BF0B      OUT	0x3B,R16
      53 37E3      CPI	R30,0x73
      54 07F1      CPC	R31,R17
      55 F021      BEQ	0x005A
      56 95C8      LPM
      57 9631      ADIW	R30,1
      58 920D      ST	R0,X+
      59 CFF9      RJMP	0x0053
      5A 940E 0138 CALL	_main
_exit:
      5C CFFF      RJMP	_exit
FILE: D:\iccavr\mega16\11\10bit_adc\delay.h
(0001) /**********延时函数*****************/
(0002) /*-----------------------------------------------
(0003) delay_us	   :1us延时函数
(0004) ------------------------------------------------*/
(0005) void delay_us(void)
(0006) {
(0007)  asm("nop");
_delay_us:
      5D 0000      NOP
      5E 9508      RET
_delay_nus:
  t                    --> R20
      5F 934A      ST	R20,-Y
      60 935A      ST	R21,-Y
      61 01A8      MOVW	R20,R16
(0008) }
(0009) /*-----------------------------------------------
(0010) delay_nus          :长延时函数
(0011) 输入参数: t        :延时时间 us
(0012) ------------------------------------------------*/
(0013) void delay_nus(unsigned int t)
(0014) {
      62 C001      RJMP	0x0064
(0015)  while(t--)
(0016)   delay_us();
      63 DFF9      RCALL	_delay_us
      64 011A      MOVW	R2,R20
      65 5041      SUBI	R20,1
      66 4050      SBCI	R21,0
      67 2022      TST	R2
      68 F7D1      BNE	0x0063
      69 2033      TST	R3
      6A F7C1      BNE	0x0063
      6B 9159      LD	R21,Y+
      6C 9149      LD	R20,Y+
      6D 9508      RET
(0017) }
(0018) /*----------------------------------------------
(0019) delay_ms	   :1ms延时函数
(0020) -----------------------------------------------*/
(0021) void delay_ms(void)
(0022) {
(0023)  unsigned int i;
(0024)  for(i=0;i<1140;i++);
_delay_ms:
  i                    --> R16
      6E 2700      CLR	R16
      6F 2711      CLR	R17
      70 C002      RJMP	0x0073
      71 5F0F      SUBI	R16,0xFF
      72 4F1F      SBCI	R17,0xFF
      73 3704      CPI	R16,0x74
      74 E0E4      LDI	R30,4
      75 071E      CPC	R17,R30
      76 F3D0      BCS	0x0071
      77 9508      RET
_delay_nms:
  t                    --> R20
      78 934A      ST	R20,-Y
      79 935A      ST	R21,-Y
      7A 01A8      MOVW	R20,R16
(0025) }
(0026) /*----------------------------------------------
(0027) delay_nms          :长延时函数
(0028) 输入参数: t        :延时时间 ms
(0029) -----------------------------------------------*/
(0030) void delay_nms(unsigned int t)
(0031) {
      7B C001      RJMP	0x007D
(0032)  while(t--)
(0033)   delay_ms();
      7C DFF1      RCALL	_delay_ms
      7D 011A      MOVW	R2,R20
      7E 5041      SUBI	R20,1
      7F 4050      SBCI	R21,0
      80 2022      TST	R2
      81 F7D1      BNE	0x007C
      82 2033      TST	R3
      83 F7C1      BNE	0x007C
      84 9159      LD	R21,Y+
      85 9149      LD	R20,Y+
      86 9508      RET
_lcd_write:
  j                    --> R22
  a                    --> R20
  i                    --> R10
  content              --> R10
  dat_comm             --> R12
      87 940E 0148 CALL	push_xgsetF03C
      89 2EA2      MOV	R10,R18
      8A 2EC0      MOV	R12,R16
FILE: D:\iccavr\mega16\11\10bit_adc\lcd12232.h
(0001) //定义LCD口线
(0002) #define lcd_cs   PA4
(0003) #define lcd_std  PA3
(0004) #define lcd_sclk PA2
(0005) #define lcd_port PORTA
(0006) #define lcd_ddr  DDRA
(0007) 
(0008) //LCD显示坐标定义
(0009) #define x1    0x80    //lcd初始坐标1
(0010) #define x2    0x90    //lcd初始坐标2
(0011) 
(0012) //LCD数据/命令格式定义
(0013) #define command  0       //lcd命令
(0014) #define data     1       //lcd数据
(0015) 
(0016) //传送单个字节到LCD
(0017) void lcd_write(unsigned char dat_comm,unsigned char content) 
(0018) {
(0019)   unsigned char a,i,j;
(0020)   delay_ms();//延时时间要根据实际使用的芯片采用不同的延时时间
      8B DFE2      RCALL	_delay_ms
(0021)   a=content;   //数据记录
      8C 2D4A      MOV	R20,R10
(0022)   //delay_ms();//这个延时要根据实际需要看是否需要增加//如8515就要加
(0023)   lcd_port|=BIT(lcd_cs);//cs=1
      8D 9ADC      SBI	0x1B,4
(0024)   lcd_port&=~BIT(lcd_sclk);//sclk=0;
      8E 98DA      CBI	0x1B,2
(0025)   lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//std=1;
      8F 9ADB      SBI	0x1B,3
(0026)   for(i=0;i<5;i++)   //启动命令
      90 24AA      CLR	R10
      91 C003      RJMP	0x0095
(0027)   {
(0028)     lcd_port|=BIT(lcd_sclk);//sclk=1;
      92 9ADA      SBI	0x1B,2
(0029) 	lcd_port&=~BIT(lcd_sclk);//sclk=0;
      93 98DA      CBI	0x1B,2
      94 94A3      INC	R10
      95 2D8A      MOV	R24,R10
      96 3085      CPI	R24,5
      97 F3D0      BCS	0x0092
(0030)   }
(0031)   lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
      98 98DB      CBI	0x1B,3
(0032)   lcd_port|=BIT(lcd_sclk);//sclk=1;
      99 9ADA      SBI	0x1B,2
(0033)   lcd_port&=~BIT(lcd_sclk);//sclk=0;
      9A 98DA      CBI	0x1B,2
(0034)   if(dat_comm)
      9B 20CC      TST	R12
      9C F011      BEQ	0x009F
(0035)     lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//std=1;   //数据
      9D 9ADB      SBI	0x1B,3
      9E C001      RJMP	0x00A0
(0036)   else
(0037)     lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;   //命令
      9F 98DB      CBI	0x1B,3
(0038)   lcd_port|=BIT(lcd_sclk);//sclk=1;
      A0 9ADA      SBI	0x1B,2
(0039)   lcd_port&=~BIT(lcd_sclk);//sclk=0;
      A1 98DA      CBI	0x1B,2
(0040)   lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
      A2 98DB      CBI	0x1B,3
(0041)   lcd_port|=BIT(lcd_sclk);//sclk=1;
      A3 9ADA      SBI	0x1B,2
(0042)   lcd_port&=~BIT(lcd_sclk);//sclk=0;
      A4 98DA      CBI	0x1B,2
(0043)   for(j=0;j<2;j++)       //循环发送8个位数据
      A5 2766      CLR	R22
      A6 C01A      RJMP	0x00C1
(0044)   {
(0045)     for(i=0;i<4;i++)
      A7 24AA      CLR	R10
      A8 C00B      RJMP	0x00B4
(0046)     {
(0047)       if ((a&0x80)==0x80) 
      A9 2F84      MOV	R24,R20
      AA 7880      ANDI	R24,0x80
      AB 3880      CPI	R24,0x80
      AC F411      BNE	0x00AF
(0048) 	    lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//单字节传送
      AD 9ADB      SBI	0x1B,3
      AE C001      RJMP	0x00B0
(0049) 	  else                
(0050) 	    lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);
      AF 98DB      CBI	0x1B,3
(0051) 	  a=a<<1;
      B0 0F44      LSL	R20
(0052)       lcd_port|=BIT(lcd_sclk);//sclk=1;
      B1 9ADA      SBI	0x1B,2
(0053) 	  lcd_port&=~BIT(lcd_sclk);//sclk=0;
      B2 98DA      CBI	0x1B,2
      B3 94A3      INC	R10
      B4 2D8A      MOV	R24,R10
      B5 3084      CPI	R24,4
      B6 F390      BCS	0x00A9
(0054)     }
(0055)     lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
      B7 98DB      CBI	0x1B,3
(0056)     for(i=0;i<4;i++)      //发送4个空数据
      B8 24AA      CLR	R10
      B9 C003      RJMP	0x00BD
(0057)     {
(0058)       lcd_port|=BIT(lcd_sclk);//sclk=1;
      BA 9ADA      SBI	0x1B,2
(0059) 	  lcd_port&=~BIT(lcd_sclk);//sclk=0;
      BB 98DA      CBI	0x1B,2
      BC 94A3      INC	R10
      BD 2D8A      MOV	R24,R10
      BE 3084      CPI	R24,4
      BF F3D0      BCS	0x00BA
      C0 9563      INC	R22
      C1 3062      CPI	R22,2
      C2 F320      BCS	0x00A7
(0060)     }
(0061)   }
(0062)   lcd_port|=BIT(lcd_cs);
      C3 9ADC      SBI	0x1B,4

⌨️ 快捷键说明

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