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

📄 salve.lis

📁 用两片AVR(ATmega16)单片机
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00FA 2FE0              ldi R18,15
 00FC 07E0              ldi R16,7
 00FE 80DF              xcall _SEND
 0100                   .dbline 79
 0100           ;                 SEND(0x08,0x0f); 
 0100 2FE0              ldi R18,15
 0102 08E0              ldi R16,8
 0104 7DDF              xcall _SEND
 0106                   .dbline 80
 0106           ;                 }break; 
 0106                   .dbline 80
 0106           L18:
 0106                   .dbline -2
 0106           L16:
 0106                   .dbline 0 ; func end
 0106 B990              ld R11,y+
 0108 A990              ld R10,y+
 010A 0895              ret
 010C                   .dbsym r part 10 c
 010C                   .dbend
 010C                   .dbfunc e SEG_INIT _SEG_INIT fV
                        .even
 010C           _SEG_INIT::
 010C                   .dbline -1
 010C                   .dbline 86
 010C           ;         } 
 010C           ; } 
 010C           ; 
 010C           ; //==============SEG初始化============= 
 010C           ; void SEG_INIT(void) 
 010C           ; { 
 010C                   .dbline 87
 010C           ; MAX7219_OUT_DDR|=(1<<MAX7219_CLK_PORT)|(1<<MAX7219_DIN_PORT)|(1<<MAX7219_LOAD_PORT); 
 010C 87B3              in R24,0x17
 010E 8760              ori R24,7
 0110 87BB              out 0x17,R24
 0112                   .dbline 88
 0112           ; MAX7219_OUT_PORT|=(1<<MAX7219_CLK_PORT)|(1<<MAX7219_DIN_PORT)|(1<<MAX7219_LOAD_PORT); 
 0112 88B3              in R24,0x18
 0114 8760              ori R24,7
 0116 88BB              out 0x18,R24
 0118                   .dbline 89
 0118           ; SEND(0x0c,0x01); 
 0118 21E0              ldi R18,1
 011A 0CE0              ldi R16,12
 011C 71DF              xcall _SEND
 011E                   .dbline 90
 011E           ; SEND(0x0b,0x07);  
 011E 27E0              ldi R18,7
 0120 0BE0              ldi R16,11
 0122 6EDF              xcall _SEND
 0124                   .dbline 91
 0124           ; SEND(0x0a,0x05);  
 0124 25E0              ldi R18,5
 0126 0AE0              ldi R16,10
 0128 6BDF              xcall _SEND
 012A                   .dbline 92
 012A           ; SEND(0x09,0xff);  
 012A 2FEF              ldi R18,255
 012C 09E0              ldi R16,9
 012E 68DF              xcall _SEND
 0130                   .dbline 93
 0130           ; SEG_CLEAR(3); 
 0130 03E0              ldi R16,3
 0132 A9DF              xcall _SEG_CLEAR
 0134                   .dbline -2
 0134           L22:
 0134                   .dbline 0 ; func end
 0134 0895              ret
 0136                   .dbend
 0136                   .dbfunc e SEG_L _SEG_L fV
 0136           ;              i -> R12
 0136           ;         number -> R10,R11
                        .even
 0136           _SEG_L::
 0136 0E940000          xcall push_xgset003C
 013A 5801              movw R10,R16
 013C                   .dbline -1
 013C                   .dbline 99
 013C           ; } 
 013C           ; 
 013C           ; 
 013C           ; //=============SEG左四显示数字============== 
 013C           ; void SEG_L(unsigned int number) 
 013C           ; { 
 013C                   .dbline 100
 013C           ; unsigned char i=4; 
 013C 84E0              ldi R24,4
 013E C82E              mov R12,R24
 0140                   .dbline 101
 0140           ; SEND(0x01,0x0f); //先清除左四位,左四位黑屏 
 0140 2FE0              ldi R18,15
 0142 01E0              ldi R16,1
 0144 5DDF              xcall _SEND
 0146                   .dbline 102
 0146           ; SEND(0x02,0x0f);  
 0146 2FE0              ldi R18,15
 0148 02E0              ldi R16,2
 014A 5ADF              xcall _SEND
 014C                   .dbline 103
 014C           ; SEND(0x03,0x0f);  
 014C 2FE0              ldi R18,15
 014E 03E0              ldi R16,3
 0150 57DF              xcall _SEND
 0152                   .dbline 104
 0152           ; SEND(0x04,0x0f); 
 0152 2FE0              ldi R18,15
 0154 04E0              ldi R16,4
 0156 54DF              xcall _SEND
 0158                   .dbline 106
 0158           ; 
 0158           ; if(number>9999)//要显示的数值超过4位,则显示4个H 
 0158 8FE0              ldi R24,9999
 015A 97E2              ldi R25,39
 015C 8A15              cp R24,R10
 015E 9B05              cpc R25,R11
 0160 68F4              brsh L24
 0162           X6:
 0162                   .dbline 107
 0162           ;         { 
 0162                   .dbline 108
 0162           ;         SEND(0x01,0x0c);  
 0162 2CE0              ldi R18,12
 0164 01E0              ldi R16,1
 0166 4CDF              xcall _SEND
 0168                   .dbline 109
 0168           ;         SEND(0x02,0x0c);  
 0168 2CE0              ldi R18,12
 016A 02E0              ldi R16,2
 016C 49DF              xcall _SEND
 016E                   .dbline 110
 016E           ;         SEND(0x03,0x0c);  
 016E 2CE0              ldi R18,12
 0170 03E0              ldi R16,3
 0172 46DF              xcall _SEND
 0174                   .dbline 111
 0174           ;         SEND(0x04,0x0c); 
 0174 2CE0              ldi R18,12
 0176 04E0              ldi R16,4
 0178 43DF              xcall _SEND
 017A                   .dbline 112
 017A           ;         } 
 017A 1CC0              xjmp L25
 017C           L24:
 017C                   .dbline 114
 017C           ; else//小于四位可以显示 
 017C           ;         { 
 017C           L26:
 017C                   .dbline 121
 017C           ; /*            for(i=4;i>0;i--)
 017C           ;                {
 017C           ;                 SEND(i,number%10);
 017C           ;                 number=(number-number%10)/10; 
 017C           ;                }              */
 017C           ;         do 
 017C           ;                 { 
 017C                   .dbline 122
 017C           ;                 SEND(i,number%10); 
 017C 2AE0              ldi R18,10
 017E 30E0              ldi R19,0
 0180 8501              movw R16,R10
 0182 0E940000          xcall mod16u
 0186 202F              mov R18,R16
 0188 0C2D              mov R16,R12
 018A 3ADF              xcall _SEND
 018C                   .dbline 123
 018C           ;                 number=(number-number%10)/10; 
 018C 2AE0              ldi R18,10
 018E 30E0              ldi R19,0
 0190 8501              movw R16,R10
 0192 0E940000          xcall mod16u
 0196 1801              movw R2,R16
 0198 8501              movw R16,R10
 019A 0219              sub R16,R2
 019C 1309              sbc R17,R3
 019E 2AE0              ldi R18,10
 01A0 30E0              ldi R19,0
 01A2 0E940000          xcall div16u
 01A6 5801              movw R10,R16
 01A8                   .dbline 124
 01A8           ;                 i--; 
 01A8 CA94              dec R12
 01AA                   .dbline 125
 01AA           ;                 }while(number>=1); 
 01AA           L27:
 01AA                   .dbline 125
 01AA C501              movw R24,R10
 01AC 8130              cpi R24,1
 01AE E0E0              ldi R30,0
 01B0 9E07              cpc R25,R30
 01B2 20F7              brsh L26
 01B4           X7:
 01B4                   .dbline 126
 01B4           ;         } 
 01B4           L25:
 01B4                   .dbline -2
 01B4           L23:
 01B4                   .dbline 0 ; func end
 01B4 0C940000          xjmp pop_xgset003C
 01B8                   .dbsym r i 12 c
 01B8                   .dbsym r number 10 i
 01B8                   .dbend
 01B8                   .dbfunc e SEG_R _SEG_R fV
 01B8           ;              i -> R12
 01B8           ;         number -> R10,R11
                        .even
 01B8           _SEG_R::
 01B8 0E940000          xcall push_xgset003C
 01BC 5801              movw R10,R16
 01BE                   .dbline -1
 01BE                   .dbline 132
 01BE           ; } 
 01BE           ; //===================================== 
 01BE           ; 
 01BE           ; //=============SEG右四显示数字============== 
 01BE           ; void SEG_R(unsigned int number) 
 01BE           ; { 
 01BE                   .dbline 133
 01BE           ; unsigned char i=8; 
 01BE 88E0              ldi R24,8
 01C0 C82E              mov R12,R24
 01C2                   .dbline 135
 01C2           ; 
 01C2           ; SEND(0x05,0x0f); //先清除右四位,右四位黑屏 
 01C2 2FE0              ldi R18,15
 01C4 05E0              ldi R16,5
 01C6 1CDF              xcall _SEND
 01C8                   .dbline 136
 01C8           ; SEND(0x06,0x0f);  
 01C8 2FE0              ldi R18,15
 01CA 06E0              ldi R16,6
 01CC 19DF              xcall _SEND
 01CE                   .dbline 137
 01CE           ; SEND(0x07,0x0f);  
 01CE 2FE0              ldi R18,15
 01D0 07E0              ldi R16,7
 01D2 16DF              xcall _SEND
 01D4                   .dbline 138
 01D4           ; SEND(0x08,0x0f); 
 01D4 2FE0              ldi R18,15
 01D6 08E0              ldi R16,8
 01D8 13DF              xcall _SEND
 01DA                   .dbline 140
 01DA           ; 
 01DA           ; if(number>9999)//要显示的数值超过4位,则显示4个H 
 01DA 8FE0              ldi R24,9999
 01DC 97E2              ldi R25,39
 01DE 8A15              cp R24,R10
 01E0 9B05              cpc R25,R11
 01E2 68F4              brsh L30
 01E4           X8:
 01E4                   .dbline 141
 01E4           ;         { 
 01E4                   .dbline 142
 01E4           ;         SEND(0x05,0x0c);  
 01E4 2CE0              ldi R18,12
 01E6 05E0              ldi R16,5
 01E8 0BDF              xcall _SEND
 01EA                   .dbline 143
 01EA           ;         SEND(0x06,0x0c);  
 01EA 2CE0              ldi R18,12
 01EC 06E0              ldi R16,6
 01EE 08DF              xcall _SEND
 01F0                   .dbline 144
 01F0           ;         SEND(0x07,0x0c);  
 01F0 2CE0              ldi R18,12
 01F2 07E0              ldi R16,7
 01F4 05DF              xcall _SEND
 01F6                   .dbline 145
 01F6           ;         SEND(0x08,0x0c); 
 01F6 2CE0              ldi R18,12
 01F8 08E0              ldi R16,8
 01FA 02DF              xcall _SEND
 01FC                   .dbline 146
 01FC           ;         } 
 01FC 1CC0              xjmp L31
 01FE           L30:
 01FE                   .dbline 148
 01FE           ; else//小于四位可以显示 
 01FE           ;         {
 01FE           L32:
 01FE                   .dbline 156
 01FE           ; /*                    for(i=8;i>4;i--)
 01FE           ;                {
 01FE           ;                 SEND(i,number%10);
 01FE           ;                 number=(number-number%10)/10; 
 01FE           ;                }  */ 
 01FE           ;       
 01FE           ;         do 
 01FE           ;                 { 
 01FE                   .dbline 157
 01FE           ;                 SEND(i,number%10); 
 01FE 2AE0              ldi R18,10
 0200 30E0              ldi R19,0
 0202 8501              movw R16,R10
 0204 0E940000          xcall mod16u
 0208 202F              mov R18,R16
 020A 0C2D              mov R16,R12
 020C F9DE              xcall _SEND
 020E                   .dbline 158
 020E           ;                 number=(number-number%10)/10; 
 020E 2AE0              ldi R18,10
 0210 30E0              ldi R19,0
 0212 8501              movw R16,R10
 0214 0E940000          xcall mod16u
 0218 1801              movw R2,R16
 021A 8501              movw R16,R10
 021C 0219              sub R16,R2
 021E 1309              sbc R17,R3
 0220 2AE0              ldi R18,10
 0222 30E0              ldi R19,0
 0224 0E940000          xcall div16u
 0228 5801              movw R10,R16
 022A                   .dbline 159
 022A           ;                               i--;
 022A CA94              dec R12
 022C                   .dbline 160
 022C           ;                 }while(number>=1);  
 022C           L33:
 022C                   .dbline 160
 022C C501              movw R24,R10
 022E 8130              cpi R24,1
 0230 E0E0              ldi R30,0
 0232 9E07              cpc R25,R30
 0234 20F7              brsh L32
 0236           X9:
 0236                   .dbline 161
 0236           ;         } 
 0236           L31:
 0236                   .dbline -2
 0236           L29:
 0236                   .dbline 0 ; func end
 0236 0C940000          xjmp pop_xgset003C
 023A                   .dbsym r i 12 c

⌨️ 快捷键说明

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