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

📄 mydesign.lst

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0655 1FF9      ADC	R31,R25
    0656 8180      LDD	R24,Z+0
    0657 2799      CLR	R25
    0658 96C0      ADIW	R24,0x30
    0659 8399      STD	Y+1,R25
    065A 8388      STD	Y+0,R24
    065B 2722      CLR	R18
    065C 910000F9  LDS	R16,_j
    065E D1B7      RCALL	_LCD_write
(0141) 					break;
    065F C06C      RJMP	0x06CC
(0142) 				case	KEY_DEC:
(0143) 					value_table[j+1]--;
    0660 EF8D      LDI	R24,0xFD
    0661 E090      LDI	R25,0
    0662 902000F9  LDS	R2,_j
    0664 2433      CLR	R3
    0665 0E28      ADD	R2,R24
    0666 1E39      ADC	R3,R25
    0667 2DE2      MOV	R30,R2
    0668 2DF3      MOV	R31,R3
    0669 8180      LDD	R24,Z+0
    066A 5081      SUBI	R24,1
    066B 8380      STD	Z+0,R24
(0144) 					if(value_table[j+1]==255) value_table[j+1]=9;
    066C EF8D      LDI	R24,0xFD
    066D E090      LDI	R25,0
    066E 91E000F9  LDS	R30,_j
    0670 27FF      CLR	R31
    0671 0FE8      ADD	R30,R24
    0672 1FF9      ADC	R31,R25
    0673 8180      LDD	R24,Z+0
    0674 3F8F      CPI	R24,0xFF
    0675 F449      BNE	0x067F
    0676 EF8D      LDI	R24,0xFD
    0677 E090      LDI	R25,0
    0678 91E000F9  LDS	R30,_j
    067A 27FF      CLR	R31
    067B 0FE8      ADD	R30,R24
    067C 1FF9      ADC	R31,R25
    067D E089      LDI	R24,0x9
    067E 8380      STD	Z+0,R24
(0145) 			        LCD_write(j,0,value_table[j+1]+'0');
    067F EF8D      LDI	R24,0xFD
    0680 E090      LDI	R25,0
    0681 91E000F9  LDS	R30,_j
    0683 27FF      CLR	R31
    0684 0FE8      ADD	R30,R24
    0685 1FF9      ADC	R31,R25
    0686 8180      LDD	R24,Z+0
    0687 2799      CLR	R25
    0688 96C0      ADIW	R24,0x30
    0689 8399      STD	Y+1,R25
    068A 8388      STD	Y+0,R24
    068B 2722      CLR	R18
    068C 910000F9  LDS	R16,_j
    068E D187      RCALL	_LCD_write
(0146) 					break;
    068F C03C      RJMP	0x06CC
(0147) 			    case	KEY_FN:
(0148) 			     	Time1=value_table[1]*1000+ value_table[2]*100+value_table[3]*10+value_table[4];
    0690 912000FE  LDS	R18,_value_table+2
    0692 2733      CLR	R19
    0693 E604      LDI	R16,0x64
    0694 E010      LDI	R17,0
    0695 D614      RCALL	mpy16s
    0696 2E20      MOV	R2,R16
    0697 2E31      MOV	R3,R17
    0698 912000FD  LDS	R18,_value_table+1
    069A 2733      CLR	R19
    069B EE08      LDI	R16,0xE8
    069C E013      LDI	R17,3
    069D D60C      RCALL	mpy16s
    069E 2E40      MOV	R4,R16
    069F 2E51      MOV	R5,R17
    06A0 0C42      ADD	R4,R2
    06A1 1C53      ADC	R5,R3
    06A2 912000FF  LDS	R18,_value_table+3
    06A4 2733      CLR	R19
    06A5 E00A      LDI	R16,0xA
    06A6 E010      LDI	R17,0
    06A7 D602      RCALL	mpy16s
    06A8 0E40      ADD	R4,R16
    06A9 1E51      ADC	R5,R17
    06AA 90200100  LDS	R2,0x100
    06AC 2433      CLR	R3
    06AD 0C42      ADD	R4,R2
    06AE 1C53      ADC	R5,R3
    06AF 925000F8  STS	__idata_end+1,R5
    06B1 924000F7  STS	__idata_end,R4
(0149) 					if(Time1<MIN_T) Time1=MIN_T;
    06B3 2D84      MOV	R24,R4
    06B4 2D95      MOV	R25,R5
    06B5 3382      CPI	R24,0x32
    06B6 E0E0      LDI	R30,0
    06B7 079E      CPC	R25,R30
    06B8 F430      BCC	0x06BF
    06B9 E382      LDI	R24,0x32
    06BA E090      LDI	R25,0
    06BB 939000F8  STS	__idata_end+1,R25
    06BD 938000F7  STS	__idata_end,R24
(0150) 					data_init(Time1);
    06BF 910000F7  LDS	R16,__idata_end
    06C1 911000F8  LDS	R17,__idata_end+1
    06C3 D9FD      RCALL	_data_init
(0151) 					SaveToEEPROM(1,4,5);
    06C4 E085      LDI	R24,5
    06C5 E090      LDI	R25,0
    06C6 8399      STD	Y+1,R25
    06C7 8388      STD	Y+0,R24
    06C8 E024      LDI	R18,4
    06C9 E001      LDI	R16,1
    06CA DC25      RCALL	_SaveToEEPROM
(0152) 					goto mode_again;
    06CB CD7E      RJMP	0x044A
    06CC 2344      TST	R20
    06CD F009      BEQ	0x06CF
    06CE CF2B      RJMP	0x05FA
    06CF 2344      TST	R20
    06D0 F009      BEQ	0x06D2
    06D1 CDA5      RJMP	0x0477
(0153) 				}
(0154) 			}
(0155)         }
(0156)     }
(0157) }
    06D2 9626      ADIW	R28,6
    06D3 D558      RCALL	pop_gset4
    06D4 9508      RET
_PID:
  flag                 --> R12
  newDAC               --> Y+0
  ee                   --> R10
    06D5 D577      RCALL	push_gset4
    06D6 2EA0      MOV	R10,R16
    06D7 2EB1      MOV	R11,R17
    06D8 9724      SBIW	R28,4
FILE: D:\hujie\PID.c
(0001) // PID.c
(0002) // 8/7/2005 written by MrLiu
(0003) //
(0004) 
(0005) #include <io8515v.h>
(0006) #include "PID.h"
(0007) #include "main.h" 
(0008) #define PID_EE_VALUE_MAX   100
(0009) 
(0010) void PID(int ee)
(0011) {
(0012)  	long	newDAC;
(0013) 	int		flag=1;
    06D9 E081      LDI	R24,1
    06DA E090      LDI	R25,0
    06DB 2EC8      MOV	R12,R24
    06DC 2ED9      MOV	R13,R25
(0014) 	
(0015) 	if(ee>PID_EE_VALUE_MAX) ee=PID_EE_VALUE_MAX;
    06DD E684      LDI	R24,0x64
    06DE 158A      CP	R24,R10
    06DF 059B      CPC	R25,R11
    06E0 F414      BGE	0x06E3
    06E1 2EA8      MOV	R10,R24
    06E2 2EB9      MOV	R11,R25
(0016) 	if(ee<-PID_EE_VALUE_MAX) ee=-PID_EE_VALUE_MAX;
    06E3 2D8A      MOV	R24,R10
    06E4 2D9B      MOV	R25,R11
    06E5 398C      CPI	R24,0x9C
    06E6 EFEF      LDI	R30,0xFF
    06E7 079E      CPC	R25,R30
    06E8 F424      BGE	0x06ED
    06E9 E98C      LDI	R24,0x9C
    06EA EF9F      LDI	R25,0xFF
    06EB 2EA8      MOV	R10,R24
    06EC 2EB9      MOV	R11,R25
(0017) 	newDAC=(long)DAC-((long)ee<<2);
    06ED E082      LDI	R24,2
    06EE E090      LDI	R25,0
    06EF 2C2A      MOV	R2,R10
    06F0 2C3B      MOV	R3,R11
    06F1 2444      CLR	R4
    06F2 FC37      SBRC	R3,7
    06F3 9440      COM	R4
    06F4 2455      CLR	R5
    06F5 FC47      SBRC	R4,7
    06F6 9450      COM	R5
    06F7 938A      ST	R24,-Y
    06F8 2D02      MOV	R16,R2
    06F9 2D13      MOV	R17,R3
    06FA 2D24      MOV	R18,R4
    06FB 2D35      MOV	R19,R5
    06FC D5A1      RCALL	lsl32
    06FD 90200106  LDS	R2,_DAC
    06FF 90300107  LDS	R3,_DAC+1
    0701 2444      CLR	R4
    0702 2455      CLR	R5
    0703 1A20      SUB	R2,R16
    0704 0A31      SBC	R3,R17
    0705 0A42      SBC	R4,R18
    0706 0A53      SBC	R5,R19
    0707 2FEC      MOV	R30,R28
    0708 2FFD      MOV	R31,R29
    0709 8220      STD	Z+0,R2
    070A 8231      STD	Z+1,R3
    070B 8242      STD	Z+2,R4
    070C 8253      STD	Z+3,R5
(0018) 	if (newDAC>65535) DAC=65535;
    070D EF4F      LDI	R20,0xFF
    070E EF5F      LDI	R21,0xFF
    070F E060      LDI	R22,0
    0710 E070      LDI	R23,0
    0711 2FEC      MOV	R30,R28
    0712 2FFD      MOV	R31,R29
    0713 8020      LDD	R2,Z+0
    0714 8031      LDD	R3,Z+1
    0715 8042      LDD	R4,Z+2
    0716 8053      LDD	R5,Z+3
    0717 1542      CP	R20,R2
    0718 0553      CPC	R21,R3
    0719 0564      CPC	R22,R4
    071A 0575      CPC	R23,R5
    071B F43C      BGE	0x0723
    071C EF8F      LDI	R24,0xFF
    071D EF9F      LDI	R25,0xFF
    071E 93900107  STS	_DAC+1,R25
    0720 93800106  STS	_DAC,R24
    0722 C028      RJMP	0x074B
(0019) 	else if (newDAC<0) DAC=0;
    0723 E040      LDI	R20,0
    0724 E050      LDI	R21,0
    0725 E060      LDI	R22,0
    0726 E070      LDI	R23,0
    0727 2FEC      MOV	R30,R28
    0728 2FFD      MOV	R31,R29
    0729 8020      LDD	R2,Z+0
    072A 8031      LDD	R3,Z+1
    072B 8042      LDD	R4,Z+2
    072C 8053      LDD	R5,Z+3
    072D 1624      CP	R2,R20
    072E 0635      CPC	R3,R21
    072F 0646      CPC	R4,R22
    0730 0657      CPC	R5,R23
    0731 F43C      BGE	0x0739
    0732 2422      CLR	R2
    0733 2433      CLR	R3
    0734 92300107  STS	_DAC+1,R3
    0736 92200106  STS	_DAC,R2
    0738 C012      RJMP	0x074B
(0020) 	else DAC=newDAC&0x0ffff;
    0739 EF4F      LDI	R20,0xFF
    073A EF5F      LDI	R21,0xFF
    073B E060      LDI	R22,0
    073C E070      LDI	R23,0
    073D 2FEC      MOV	R30,R28
    073E 2FFD      MOV	R31,R29
    073F 8020      LDD	R2,Z+0
    0740 8031      LDD	R3,Z+1
    0741 8042      LDD	R4,Z+2
    0742 8053      LDD	R5,Z+3
    0743 2224      AND	R2,R20
    0744 2235      AND	R3,R21
    0745 2246      AND	R4,R22
    0746 2257      AND	R5,R23
    0747 92300107  STS	_DAC+1,R3
    0749 92200106  STS	_DAC,R2
(0021) }
    074B 9624      ADIW	R28,4
    074C D4DF      RCALL	pop_gset4
    074D 9508      RET
FILE: D:\hujie\1602B_LCD.c
(0001) // 1602B_LCD.c
(0002) //
(0003) 
(0004) /**********************************************************
(0005) /* TC1602B LCD DISPLAY
(0006) /* LCD_write函数功能:当command=0时,向LCD写入数据,否则向LCD写
(0007)                    入命令
(0008) /* LCD第一行显示寄存器地址:0X80-0X8F
(0009) /* LCD第二行显示寄存器地址:0XC0-0XCF
(0010) /* 光标命令:
(0011) /* LCD_write_char(0x0e,0);    //光标开
(0012) /* LCD_write_char(0x0d,0);    //光标所在字符闪烁  
(0013) /* LCD_write_char(0x0c,0);    //光标关  
(0014) **********************************************************/
(0015) #include <io8515v.h>
(0016) #include <macros.h>
(0017) #include "1602LCD.h"
(0018) 
(0019) void LCD_init(void) 
(0020) { 
(0021)   LCD_CTRL_DDR|=LCD_RS | LCD_EN | LCD_RW;
_LCD_init:
    074E B387      IN	R24,0x17
    074F 608E      ORI	R24,0xE
    0750 BB87      OUT	0x17,R24
(0022)   LCD_DATA_DDR|=LCD_DATA;
    0751 B387      IN	R24,0x17
    0752 6F80      ORI	R24,0xF0
    0753 BB87      OUT	0x17,R24
(0023)   delay_nms(100); 
    0754 E604      LDI	R16,0x64
    0755 E010      LDI	R17,0
    0756 D135      RCALL	_delay_nms
(0024)   LCD_write_char(0x28,0); 					    //功能设置    
    0757 2722      CLR	R18
    0758 2733      CLR	R19
    0759 E208      LDI	R16,0x28
    075A E010      LDI	R17,0
    075B D021      RCALL	_LCD_write_char
(0025)   delay_nus(100); 
    075C E604      LDI	R16,0x64
    075D E010      LDI	R17,0
    075E D115      RCALL	_delay_nus
(0026)   LCD_write_char(0x06,0);      					//显示光标移动设置
    075F 2722      CLR	R18
    0760 2733      CLR	R19
    0761 E006      LDI	R16,6
    0762 E010      LDI	R17,0
    0763 D019      RCALL	_LCD_write_char
(0027)   delay_nus(100);
    0764 E604      LDI	R16,0x64
    0765 E010      LDI	R17,0
    0766 D10D      RCALL	_delay_nus
(0028)   LCD_write_char(0x01,0);      					//显示清屏
    0767 2722      CLR	R18
    0768 2733      CLR	R19
    0769 E001      LDI	R16,1
    076A E010      LDI	R17,0
    076B D011      RCALL	_LCD_write_char
(0029)   delay_nms(2);
    076C E002      LDI	R16,2
    076D E010      LDI	R17,0
    076E D11D      RCALL	_delay_nms
(0030)   LCD_write_char(0x0C,0); 						//显示开 
    076F 2722      CLR	R18
    0770 2733      CLR	R19
    0771 E00C      LDI	R16,0xC
    0772 E010      LDI	R17,0
    0773 D009      RCALL	_LCD_write_char
(0031)   delay_nus(100);
    0774 E604      LDI	R16,0x64
    0775 E010      LDI	R17,0
(0032) }
    0776 C0FD      RJMP	_delay_nus
(0033)  
(0034) void LCD_en_write(void)        //EN端产生一个高电平脉冲,写LCD
(0035)   {
(0036)     LCD_EN_PORT |= LCD_EN;
_LCD_en_write:
    0777 9AC3      SBI	0x18,3
(0037)     delay_nus(5);
    0778 E005      LDI	R16,5
    0779 E010      LDI	R17,0
    077A D0F9      RCALL	_delay_nus
(0038)     LCD_EN_PORT &= ~LCD_EN;
    077B 98C3      CBI	0x18,3
(0039)   }
    077C 9508      RET
_LCD_write_char:
  data_temp            --> R22
  command_temp         --> R20
  data                 --> R12
  command              --> R10
    077D D4CF      RCALL	push_gset4
    077E 2EC2      MOV	R12,R18
    077F 2ED3      MOV	R13,R19
    0780 2EA0      MOV	R10,R16
    0781 2EB1      MOV	R11,R17
(0040) 
(0041) /****************************************************************
(0042) /* LCD_write_char    : 英文字符串显示函数
(0043) /* 输入参数:*s      :英文字符串指针?
(0044)              X、Y    : 显示字符串的位置,X:0-15,Y:0-1
(0045)                      LCD第一行显示寄存器地址:0X80-0X8F
(0046)                      LCD第一行显示寄存器地址:0XC0-0XCF 		
(0047) *****************************************************************/
(0048) void LCD_write_char(unsigned command,unsigned data)
(0049)   {
(0050)     unsigned command_temp,data_temp;        
(0051)     
(0052) 	command_temp = command;
    0782 2D4A      MOV	R20,R10
    0783 2D5B      MOV	R21,R11
(0053)     data_temp = data;
    0784 2D6C      MOV	R22,R12
    0785 2D7D      MOV	R23,R13
(0054)     LCD_wait_Ready();
    0786 D052      RCALL	_LCD_wait_Ready
(0055)     LCD_RW_PORT &= ~LCD_RW;             //RW=0
    0787 98C2      CBI	0x18,2
(0056)     if (command == 0)
    0788 3040      CPI	R20,0
    0789 0745      CPC	R20,R21
    078A F471      BNE	0x0799
(0057)       {
(0058)    	 LCD_RS_PORT |= LCD_RS;             //RS=1 
    078B 9AC1      SBI	0x18,1
(0059)    	 LCD_DATA_PORT &= 0X0F;
    078C B388      IN	R24,0x18
    078D 708F      ANDI	R24,0xF
    078E BB88      OUT	0x18,R24
(0060) 	 LCD_DATA_PORT |= data_temp&0xf0;   //send high 4bit
    078F 2F86      MOV	R24,R22
    0790 2F97      MOV	R25,R23
    0791 7F80      ANDI	R24,0xF0
    0792 7090      ANDI	R25,0
    0793 B228      IN	R2,0x18
    0794 2433      CLR	R3
    0795 2A28      OR	R2,R24
    0796 2A39      OR	R3,R25
    0797 BA28      OUT	0x18,R2
(0061)       }
    0798 C00D      RJMP	0x07A6
(0062)     else 
(0063)       {
(0064) 	 LCD_RS_PORT &= ~LCD_RS;            //RS

⌨️ 快捷键说明

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