main.lis
来自「Button 一个国外大学生毕业设计,用的是AVR单片机」· LIS 代码 · 共 1,068 行 · 第 1/4 页
LIS
1,068 行
01E0 5023 mov A,<L28
01E2 5C mov X,A
01E3 18 pop A
01E4 7C0000 xcall _LCD_1_PrCString
01E7 20 pop X
01E8 .dbline 191
01E8 ; }
01E8 L36:
01E8 .dbline 194
01E8 ;
01E8 ; // check to see if BUTTON 4 is on or off
01E8 ; if ((CSR_1_baSwOnMask[0]) & BUTTON_4)
01E8 62D000 mov REG[0xd0],>_CSR_1_baSwOnMask
01EB 470010 tst [_CSR_1_baSwOnMask],16
01EE A016 jz L38
01F0 .dbline 195
01F0 ; {
01F0 .dbline 197
01F0 ; // switch is ON
01F0 ; LCD_1_Position(0,8);
01F0 10 push X
01F1 5708 mov X,8
01F3 5000 mov A,0
01F5 7C0000 xcall _LCD_1_Position
01F8 .dbline 198
01F8 ; LCD_1_PrCString("4 ");
01F8 5017 mov A,>L40
01FA 08 push A
01FB 5017 mov A,<L40
01FD 5C mov X,A
01FE 18 pop A
01FF 7C0000 xcall _LCD_1_PrCString
0202 20 pop X
0203 .dbline 199
0203 ; }else
0203 8014 xjmp L39
0205 L38:
0205 .dbline 200
0205 ; {
0205 .dbline 202
0205 ; // switch is OFF
0205 ; LCD_1_Position(0,8);
0205 10 push X
0206 5708 mov X,8
0208 5000 mov A,0
020A 7C0000 xcall _LCD_1_Position
020D .dbline 203
020D ; LCD_1_PrCString(" ");
020D 5023 mov A,>L28
020F 08 push A
0210 5023 mov A,<L28
0212 5C mov X,A
0213 18 pop A
0214 7C0000 xcall _LCD_1_PrCString
0217 20 pop X
0218 .dbline 204
0218 ; }
0218 L39:
0218 .dbline 207
0218 ;
0218 ; // check to see if BUTTON 5 is on or off
0218 ; if ((CSR_1_baSwOnMask[0]) & BUTTON_5)
0218 62D000 mov REG[0xd0],>_CSR_1_baSwOnMask
021B 470020 tst [_CSR_1_baSwOnMask],32
021E A016 jz L41
0220 .dbline 208
0220 ; {
0220 .dbline 210
0220 ; // switch is ON
0220 ; LCD_1_Position(0,10);
0220 10 push X
0221 570A mov X,10
0223 5000 mov A,0
0225 7C0000 xcall _LCD_1_Position
0228 .dbline 211
0228 ; LCD_1_PrCString("5 ");
0228 5014 mov A,>L43
022A 08 push A
022B 5014 mov A,<L43
022D 5C mov X,A
022E 18 pop A
022F 7C0000 xcall _LCD_1_PrCString
0232 20 pop X
0233 .dbline 212
0233 ; }else
0233 8014 xjmp L42
0235 L41:
0235 .dbline 213
0235 ; {
0235 .dbline 215
0235 ; // switch is OFF
0235 ; LCD_1_Position(0,10);
0235 10 push X
0236 570A mov X,10
0238 5000 mov A,0
023A 7C0000 xcall _LCD_1_Position
023D .dbline 216
023D ; LCD_1_PrCString(" ");
023D 5023 mov A,>L28
023F 08 push A
0240 5023 mov A,<L28
0242 5C mov X,A
0243 18 pop A
0244 7C0000 xcall _LCD_1_PrCString
0247 20 pop X
0248 .dbline 217
0248 ; }
0248 L42:
0248 .dbline 220
0248 ;
0248 ; // check to see if BUTTON 6 is on or off
0248 ; if ((CSR_1_baSwOnMask[0]) & BUTTON_6)
0248 62D000 mov REG[0xd0],>_CSR_1_baSwOnMask
024B 470040 tst [_CSR_1_baSwOnMask],64
024E A016 jz L44
0250 .dbline 221
0250 ; {
0250 .dbline 223
0250 ; // switch is ON
0250 ; LCD_1_Position(0,12);
0250 10 push X
0251 570C mov X,12
0253 5000 mov A,0
0255 7C0000 xcall _LCD_1_Position
0258 .dbline 224
0258 ; LCD_1_PrCString("6 ");
0258 5011 mov A,>L46
025A 08 push A
025B 5011 mov A,<L46
025D 5C mov X,A
025E 18 pop A
025F 7C0000 xcall _LCD_1_PrCString
0262 20 pop X
0263 .dbline 225
0263 ; }else
0263 8028 xjmp L24
0265 L44:
0265 .dbline 226
0265 ; {
0265 .dbline 228
0265 ; // switch is OFF
0265 ; LCD_1_Position(0,12);
0265 10 push X
0266 570C mov X,12
0268 5000 mov A,0
026A 7C0000 xcall _LCD_1_Position
026D .dbline 229
026D ; LCD_1_PrCString(" ");
026D 5023 mov A,>L28
026F 08 push A
0270 5023 mov A,<L28
0272 5C mov X,A
0273 18 pop A
0274 7C0000 xcall _LCD_1_PrCString
0277 20 pop X
0278 .dbline 230
0278 ; }
0278 .dbline 231
0278 ; }
0278 8013 xjmp L24
027A L23:
027A .dbline 233
027A ; else // blank the top line of the LCD screen
027A ; {
027A .dbline 234
027A ; LCD_1_Position(0,0);
027A 10 push X
027B 5000 mov A,0
027D 5C mov X,A
027E 7C0000 xcall _LCD_1_Position
0281 .dbline 235
0281 ; LCD_1_PrCString(" ");
0281 5029 mov A,>L12
0283 08 push A
0284 5029 mov A,<L12
0286 5C mov X,A
0287 18 pop A
0288 7C0000 xcall _LCD_1_PrCString
028B 20 pop X
028C .dbline 236
028C ; }
028C L24:
028C .dbline 239
028C 10 push X
028D 5700 mov X,0
028F 5001 mov A,1
0291 7C0000 xcall _LCD_1_Position
0294 .dbline 240
0294 5000 mov A,>L47
0296 08 push A
0297 5000 mov A,<L47
0299 5C mov X,A
029A 18 pop A
029B 7C0000 xcall _LCD_1_PrCString
029E 20 pop X
029F .dbline 243
029F L14:
029F .dbline 119
029F 8E14 xjmp L13
02A1 X0:
02A1 .dbline -2
02A1 .dbline 244
02A1 ;
02A1 ; // output the value of CSR_baSwOnMask[0] to the LCD screen
02A1 ; LCD_1_Position(1,0);
02A1 ; LCD_1_PrCString("baSwOnMask[0]: ");
02A1 ;
02A1 ;
02A1 ; } // End of normal operation loop
02A1 ; } // End of main
02A1 L1:
02A1 .dbline 0 ; func end
02A1 8FFF jmp .
02A3 .dbend
02A3 .dbfunc e CalibrateSwitches _CalibrateSwitches fV
02A3 ; bFlag -> X+0
02A3 _CalibrateSwitches::
02A3 .dbline -1
02A3 10 push X
02A4 4F mov X,SP
02A5 3801 add SP,1
02A7 .dbline 269
02A7 ;
02A7 ; // -------------------------------------------------------------
02A7 ; //
02A7 ; // Function: CalibrateSwitches()
02A7 ; //
02A7 ; // Description:
02A7 ; // This function will automatically determine the appropriate
02A7 ; // DAC values for each switch in the system. The values will be
02A7 ; // stored in the variable - bDACcurrent[]. The function will set
02A7 ; // the DAC value depending on the values set by the following lines:
02A7 ; //
02A7 ; // #define DAC_MAX_RAW_COUNT 310
02A7 ; // #define DAC_MIN_RAW_COUNT 290
02A7 ; //
02A7 ; // These lines are located at the top of the program and give a range
02A7 ; // for the raw CSR count values to be in to set the DAC value. This
02A7 ; // function will iterate through each switch. It will do a single
02A7 ; // scan and compare the raw count values with the range defined above.
02A7 ; // If the count values for that particular switch are outside of the
02A7 ; // range, the function will change the DAC value appropriately and do
02A7 ; // a rescan. This process is repeated until the raw counts for each
02A7 ; // particular switch are within the specified range.
02A7 ; //
02A7 ; void CalibrateSwitches(void)
02A7 ; {
02A7 .dbline 270
02A7 ; BYTE bFlag = 1;
02A7 560001 mov [X+0],1
02AA .dbline 272
02AA ;
02AA ; for(i=0; i<NUM_SWITCHES; i++) // iterate through all the switches in the system
02AA 62D000 mov REG[0xd0],>_i
02AD 550100 mov [_i+1],0
02B0 550000 mov [_i],0
02B3 8133 xjmp L52
02B5 L49:
02B5 .dbline 273
02B5 ; {
02B5 .dbline 276
02B5 ; // calibrate DAC setting for a switch
02B5 ; //------------------------------------------------------
02B5 ; bFlag = 1; // reset the flag to a true state
02B5 560001 mov [X+0],1
02B8 .dbline 277
02B8 ; CSR_1_SetScanSpeed(3); // start with a scanspeed of three to get ONE oscillator cycle or period
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?