?? 1602test.lst
字號(hào):
__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:\醫(yī)療電子采樣板\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) /*----------------------------------函數(shù)聲明------------------------------------------*/
(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) /*------------------------------------主函數(shù)-------------------------------------------*/
(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 采樣四個(gè)通道
(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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -