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

📄 1602test.lst

📁 三星公司的一款1602vfd显示屏
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
    00BB E5CF      LDI	R28,0x5F
    00BC E0D4      LDI	R29,4
    00BD BFCD      OUT	0x3D,R28
    00BE BFDE      OUT	0x3E,R29
    00BF 51C0      SUBI	R28,0x10
    00C0 40D0      SBCI	R29,0
    00C1 EA0A      LDI	R16,0xAA
    00C2 8308      STD	Y+0,R16
    00C3 2400      CLR	R0
    00C4 E8E2      LDI	R30,0x82
    00C5 E0F0      LDI	R31,0
    00C6 E011      LDI	R17,1
    00C7 32EF      CPI	R30,0x2F
    00C8 07F1      CPC	R31,R17
    00C9 F011      BEQ	0x00CC
    00CA 9201      ST	R0,Z+
    00CB CFFB      RJMP	0x00C7
    00CC 8300      STD	Z+0,R16
    00CD E5E3      LDI	R30,0x53
    00CE E0F1      LDI	R31,1
    00CF E6A0      LDI	R26,0x60
    00D0 E0B0      LDI	R27,0
    00D1 E011      LDI	R17,1
    00D2 37E5      CPI	R30,0x75
    00D3 07F1      CPC	R31,R17
    00D4 F021      BEQ	0x00D9
    00D5 95C8      LPM
    00D6 9631      ADIW	R30,1
    00D7 920D      ST	R0,X+
    00D8 CFF9      RJMP	0x00D2
    00D9 940E00DC  CALL	_main
_exit:
    00DB CFFF      RJMP	_exit
FILE: D:\医疗电子采样板\1602test\1602test.c
(0001) //ICC-AVR application builder : 2006-11-14 10:39:01
(0002) // Target : M16
(0003) // Crystal: 4.0000Mhz
(0004) 
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) #define vfd_data_port PORTB
(0008) #define vfd_data_ddr DDRB
(0009) #define vfd_busy_pin PINB
(0010) #define vfd_busy_ddr DDRB
(0011) #define vfd_control_port PORTD
(0012) #define vfd_control_ddr DDRD
(0013) #define vfd_RS 0x20 //PORTD^5
(0014) #define vfd_EN 0x40 //PORTD^6
(0015) #define vfd_RW 0x80 //PORTD^7
(0016) //#define vfd_RW 0x40 //PORTD^1
(0017) //#define vfd_EN 0x80 //PORTD^2
(0018) #define busy 0x80 //VFD_DB7
(0019) struct sem
(0020)   {
(0021)    	unsigned int 	ad_samp;			 //a/d sampling data
(0022)     unsigned int 	pc_trans;		 	 //pc transfer to chip
(0023) 	unsigned char	class_addr[4];		 //data addr
(0024) 	unsigned char 	class_data[7];	 	 //asc ii code from pc to chip or chip to pc 
(0025)   }dypass[9]; 
(0026) unsigned char 		adc_mux,i;
(0027) unsigned int  		adc_rel,adc_old,sin;
(0028) unsigned char  		adc_meas[20];
(0029) unsigned char  		hex_meas[5];
(0030) unsigned char 		rece_coun;
(0031) unsigned char  		meas_coun;
(0032) unsigned char 		*point;
(0033) unsigned char 		channel;//sampling channel
(0034) /*----------------------------------函数声明------------------------------------------*/
(0035) void vfd_init(void);
(0036) void vfd_write_command(unsigned char command,unsigned char wait_en);
(0037) void vfd_write_data(unsigned char char_data);
(0038) void wait_enable(void);
(0039) void display_a_char(unsigned char position,unsigned char char_data);
(0040) void d_a_s(unsigned char col,unsigned char *ptr);
(0041) void display_a_ch_r(unsigned char position,unsigned char char_data);
(0042) void delay_1ms(void);
(0043) void delay_nms(unsigned int n);
(0044) void adc_init(void);
(0045) void filter(unsigned char maj);
(0046) void hex_asc(unsigned int dt_meas,unsigned char *g);
(0047) //显示的两行字符
(0048) unsigned char str1[]="NO1:     NO2:   ";
(0049) unsigned char str2[]="NO3:     NO4:   ";
(0050) const unsigned char t_per[255]={
(0051) 	0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,//0~9
(0052) 	0x99,0x99,0x99,0x99,0x98,0x97,0x96,0x95,0x94,0x93,//10~19 
(0053) 	0x92,0x90,0x89,0x88,0x86,0x85,0x84,0x83,0x82,0x81,//20~29
(0054) 	0x80,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,//30~39 
(0055) 	0x70,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,//40~49 
(0056) 	0x60,0x59,0x58,0x58,0x57,0x57,0x56,0x56,0x55,0x55,//50~59     
(0057) 	0x54,0x53,0x53,0x52,0x51,0x50,0x50,0x49,0x49,0x48,//60~69
(0058) 	0x48,0x48,0x47,0x47,0x46,0x46,0x45,0x45,0x44,0x44,//70~79
(0059) 	0x44,0x43,0x43,0x43,0x42,0x42,0x41,0x41,0x40,0x40,//80~89
(0060) 	0x40,0x39,0x39,0x38,0x38,0x37,0x37,0x37,0x36,0x36,//90~99
(0061) 	0x35,0x35,0x35,0x34,0x34,0x33,0x33,0x33,0x32,0x32,//100~109
(0062) 	0x32,0x31,0x31,0x30,0x30,0x30,0x29,0x29,0x28,0x28,//110~119
(0063) 	0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x25,0x25,0x24,//120~129
(0064) 	0x24,0x24,0x23,0x23,0x23,0x22,0x22,0x22,0x21,0x21,//130~139
(0065) 	0x21,0x20,0x20,0x20,0x19,0x19,0x19,0x18,0x18,0x18,//140~149
(0066) 	0x17,0x17,0x16,0x16,0x16,0x15,0x15,0x15,0x14,0x14,//150~159
(0067) 	0x14,0x13,0x13,0x13,0x12,0x12,0x12,0x11,0x11,0x11,//160~169
(0068) 	0x10,0x10,0x9,0x9,0x9,0x8,0x8,0x7,0x7,0x6,//170~179 
(0069) 	0x6,0x6,0x5,0x5,0x5,0x4,0x4,0x3,0x3,0x2,//180~189
(0070) 	0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x2,//190~199     
(0071) 	0x2,0x3,0x3,0x4,0x4,0x3,0x5,0x5,0x5,0x6,//200~209
(0072) 	0x7,0x8,0x9,0x9,0x10,0x10,0x11,0x11,0x12,0x12,//210~219
(0073) 	0x13,0x13,0x14,0x14,0x15,0x15,0x16,0x16,0x17,0x17,//220~229
(0074) 	0x18,0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,//230~239
(0075) 	0x27,0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,//240~249
(0076) 	0x37,0x38,0x39,0x40,0x50,};//250~254
(0077) /*------------------------------------主函数-------------------------------------------*/
(0078) //在VFD上显示hello和www.xmbyte.com两行字符
(0079) void main(void)
(0080) {
(0081)  adc_init();
_main:
    00DC D0F9      RCALL	_adc_init
(0082)  vfd_data_port=0xff;
    00DD EF8F      LDI	R24,0xFF
    00DE BB88      OUT	0x18,R24
(0083)  vfd_data_ddr=0xff;
    00DF BB87      OUT	0x17,R24
(0084)  vfd_control_port=0xF0;
    00E0 EF80      LDI	R24,0xF0
    00E1 BB82      OUT	0x12,R24
(0085)  vfd_control_ddr=0xF0;
    00E2 BB81      OUT	0x11,R24
(0086)  DDRC  = 0xFF;
    00E3 EF8F      LDI	R24,0xFF
    00E4 BB84      OUT	0x14,R24
(0087)  PORTC = 0xff; //m103 output only
    00E5 BB85      OUT	0x15,R24
(0088)  
(0089)  vfd_init();
    00E6 D1C6      RCALL	_vfd_init
    00E7 C0EC      RJMP	0x01D4
(0090)  //d_a_s(0,str1);
(0091)  //d_a_s(1,str2);
(0092)  while(1)
(0093)  {
(0094)  PORTC=0XFF;
    00E8 EF8F      LDI	R24,0xFF
    00E9 BB85      OUT	0x15,R24
(0095)  vfd_write_command(0xf,1);
    00EA E021      LDI	R18,1
    00EB E00F      LDI	R16,0xF
    00EC D1E4      RCALL	_vfd_write_command
(0096)  vfd_write_command(0x6,1);
    00ED E021      LDI	R18,1
    00EE E006      LDI	R16,6
    00EF D1E1      RCALL	_vfd_write_command
(0097)  d_a_s(0,str1);
    00F0 E620      LDI	R18,0x60
    00F1 E030      LDI	R19,0
    00F2 2700      CLR	R16
    00F3 D21A      RCALL	_d_a_s
(0098)  
(0099)  //A/D 采样四个通道
(0100)   filter(0);
    00F4 2700      CLR	R16
    00F5 D13F      RCALL	_filter
(0101)   filter(1);
    00F6 E001      LDI	R16,1
    00F7 D13D      RCALL	_filter
(0102)   filter(2);
    00F8 E002      LDI	R16,2
    00F9 D13B      RCALL	_filter
(0103)   filter(3);
    00FA E003      LDI	R16,3
    00FB D139      RCALL	_filter
(0104)   sin=4;
    00FC E084      LDI	R24,4
    00FD E090      LDI	R25,0
    00FE 939000A1  STS	_sin+1,R25
    0100 938000A0  STS	_sin,R24
(0105)   for(i=2;i<=3;i++)
    0102 E082      LDI	R24,2
    0103 938000A6  STS	_i,R24
    0105 C01F      RJMP	0x0125
(0106)   {
(0107)   	  str1[sin]=dypass[0].class_data[i];
    0106 EB80      LDI	R24,0xB0
    0107 E090      LDI	R25,0
    0108 91E000A6  LDS	R30,_i
    010A 27FF      CLR	R31
    010B 0FE8      ADD	R30,R24
    010C 1FF9      ADC	R31,R25
    010D 8020      LDD	R2,Z+0
    010E E680      LDI	R24,0x60
    010F E090      LDI	R25,0
    0110 91E000A0  LDS	R30,_sin
    0112 91F000A1  LDS	R31,_sin+1
    0114 0FE8      ADD	R30,R24
    0115 1FF9      ADC	R31,R25
    0116 8220      STD	Z+0,R2
(0108) 	  sin++;
    0117 918000A0  LDS	R24,_sin
    0119 919000A1  LDS	R25,_sin+1
    011B 9601      ADIW	R24,1
    011C 939000A1  STS	_sin+1,R25
    011E 938000A0  STS	_sin,R24
    0120 918000A6  LDS	R24,_i
    0122 5F8F      SUBI	R24,0xFF
    0123 938000A6  STS	_i,R24
    0125 E083      LDI	R24,3
    0126 902000A6  LDS	R2,_i
    0128 1582      CP	R24,R2
    0129 F6E0      BCC	0x0106
(0109)   }
(0110)   str1[6]=0x1a;
    012A E18A      LDI	R24,0x1A
    012B 93800066  STS	0x66,R24
(0111)   sin=13;
    012D E08D      LDI	R24,0xD
    012E E090      LDI	R25,0
    012F 939000A1  STS	_sin+1,R25
    0131 938000A0  STS	_sin,R24
(0112)   for(i=2;i<=3;i++)
    0133 E082      LDI	R24,2
    0134 938000A6  STS	_i,R24
    0136 C01F      RJMP	0x0156
(0113)   {
(0114)     str1[sin]=dypass[1].class_data[i];
    0137 EB8F      LDI	R24,0xBF
    0138 E090      LDI	R25,0
    0139 91E000A6  LDS	R30,_i
    013B 27FF      CLR	R31
    013C 0FE8      ADD	R30,R24
    013D 1FF9      ADC	R31,R25
    013E 8020      LDD	R2,Z+0
    013F E680      LDI	R24,0x60
    0140 E090      LDI	R25,0
    0141 91E000A0  LDS	R30,_sin
    0143 91F000A1  LDS	R31,_sin+1
    0145 0FE8      ADD	R30,R24
    0146 1FF9      ADC	R31,R25
    0147 8220      STD	Z+0,R2
(0115)     sin++;
    0148 918000A0  LDS	R24,_sin
    014A 919000A1  LDS	R25,_sin+1
    014C 9601      ADIW	R24,1
    014D 939000A1  STS	_sin+1,R25
    014F 938000A0  STS	_sin,R24
    0151 918000A6  LDS	R24,_i
    0153 5F8F      SUBI	R24,0xFF
    0154 938000A6  STS	_i,R24
    0156 E083      LDI	R24,3
    0157 902000A6  LDS	R2,_i
    0159 1582      CP	R24,R2
    015A F6E0      BCC	0x0137
(0116)   }
(0117)     str1[15]=0x1a;
    015B E18A      LDI	R24,0x1A
    015C 9380006F  STS	0x6F,R24
(0118)   sin=4;
    015E E084      LDI	R24,4
    015F E090      LDI	R25,0
    0160 939000A1  STS	_sin+1,R25
    0162 938000A0  STS	_sin,R24
(0119)   for(i=2;i<=3;i++)
    0164 E082      LDI	R24,2
    0165 938000A6  STS	_i,R24
    0167 C01F      RJMP	0x0187
(0120)   {
(0121)   str2[sin]=dypass[2].class_data[i];
    0168 EC8E      LDI	R24,0xCE
    0169 E090      LDI	R25,0
    016A 91E000A6  LDS	R30,_i
    016C 27FF      CLR	R31
    016D 0FE8      ADD	R30,R24
    016E 1FF9      ADC	R31,R25
    016F 8020      LDD	R2,Z+0
    0170 E781      LDI	R24,0x71
    0171 E090      LDI	R25,0
    0172 91E000A0  LDS	R30,_sin
    0174 91F000A1  LDS	R31,_sin+1
    0176 0FE8      ADD	R30,R24
    0177 1FF9      ADC	R31,R25
    0178 8220      STD	Z+0,R2
(0122)   sin++;
    0179 918000A0  LDS	R24,_sin
    017B 919000A1  LDS	R25,_sin+1
    017D 9601      ADIW	R24,1
    017E 939000A1  STS	_sin+1,R25
    0180 938000A0  STS	_sin,R24
    0182 918000A6  LDS	R24,_i
    0184 5F8F      SUBI	R24,0xFF
    0185 938000A6  STS	_i,R24
    0187 E083      LDI	R24,3
    0188 902000A6  LDS	R2,_i
    018A 1582      CP	R24,R2
    018B F6E0      BCC	0x0168
(0123)   }
(0124)   str2[6]=0x1a;
    018C E18A      LDI	R24,0x1A
    018D 93800077  STS	0x77,R24
(0125)   sin=13;
    018F E08D      LDI	R24,0xD
    0190 E090      LDI	R25,0
    0191 939000A1  STS	_sin+1,R25
    0193 938000A0  STS	_sin,R24
(0126)   for(i=2;i<=3;i++)
    0195 E082      LDI	R24,2
    0196 938000A6  STS	_i,R24
    0198 C01F      RJMP	0x01B8
(0127)   {
(0128)     str2[sin]=dypass[3].class_data[i];
    0199 ED8D      LDI	R24,0xDD
    019A E090      LDI	R25,0
    019B 91E000A6  LDS	R30,_i
    019D 27FF      CLR	R31
    019E 0FE8      ADD	R30,R24
    019F 1FF9      ADC	R31,R25
    01A0 8020      LDD	R2,Z+0
    01A1 E781      LDI	R24,0x71
    01A2 E090      LDI	R25,0
    01A3 91E000A0  LDS	R30,_sin
    01A5 91F000A1  LDS	R31,_sin+1
    01A7 0FE8      ADD	R30,R24
    01A8 1FF9      ADC	R31,R25
    01A9 8220      STD	Z+0,R2
(0129)     sin++;
    01AA 918000A0  LDS	R24,_sin
    01AC 919000A1  LDS	R25,_sin+1
    01AE 9601      ADIW	R24,1
    01AF 939000A1  STS	_sin+1,R25
    01B1 938000A0  STS	_sin,R24
    01B3 918000A6  LDS	R24,_i
    01B5 5F8F      SUBI	R24,0xFF
    01B6 938000A6  STS	_i,R24
    01B8 E083      LDI	R24,3
    01B9 902000A6  LDS	R2,_i
    01BB 1582      CP	R24,R2
    01BC F6E0      BCC	0x0199
(0130)   }
(0131)     str2[15]=0x1a;

⌨️ 快捷键说明

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