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

📄 zlg7290_avr.lis

📁 数码管 按键芯片zlg7290的atmega128 的c语言程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0458 042F              mov R16,R20
 045A D8DE              xcall _ZLG7290_SegOnOff
 045C                   .dbline 208
 045C 0EE1              ldi R16,30
 045E 10E0              ldi R17,0
 0460 0FDF              xcall _delay1
 0462                   .dbline 209
 0462           L122:
 0462                   .dbline 205
 0462 4395              inc R20
 0464           L124:
 0464                   .dbline 205
 0464 4034              cpi R20,64
 0466 B8F3              brlo L121
 0468                   .dbline 210
 0468           ;       {
 0468           ;               ZLG7290_SegOnOff(seg,0);
 0468           ;               delay1(30);
 0468           ;       }
 0468           ;       delay1(100);
 0468 04E6              ldi R16,100
 046A 10E0              ldi R17,0
 046C 09DF              xcall _delay1
 046E                   .dbline -2
 046E                   .dbline 211
 046E           ; }
 046E           L116:
 046E 0E940000          xcall pop_gset1
 0472                   .dbline 0 ; func end
 0472 0895              ret
 0474                   .dbsym r seg 20 c
 0474                   .dbend
 0474                   .dbfunc e DispValue _DispValue fV
 0474           ;              d -> R22
 0474           ;            dat -> R10
 0474           ;              x -> R20
                        .even
 0474           _DispValue::
 0474 0E940000          xcall push_gset3
 0478 A22E              mov R10,R18
 047A 402F              mov R20,R16
 047C 2397              sbiw R28,3
 047E                   .dbline -1
 047E                   .dbline 221
 047E           ; 
 047E           ; /*
 047E           ; 函数:DispValue()
 047E           ; 功能:显示100以内的数值
 047E           ; 参数:
 047E           ;       x:显示位置,取值0~6
 047E           ;       dat:要显示的数据,取值0~99
 047E           ; */
 047E           ; void DispValue(uchar x, uchar dat)
 047E           ; {
 047E                   .dbline 223
 047E           ;       uchar d;
 047E           ;       d = dat / 10;
 047E 1AE0              ldi R17,10
 0480 0A2D              mov R16,R10
 0482 0E940000          xcall div8u
 0486 602F              mov R22,R16
 0488                   .dbline 224
 0488           ;       ZLG7290_Download(x,0,0,d);
 0488 6A83              std y+2,R22
 048A 2224              clr R2
 048C 2882              std y+0,R2
 048E 2227              clr R18
 0490 042F              mov R16,R20
 0492 CADE              xcall _ZLG7290_Download
 0494                   .dbline 225
 0494           ;       d = dat - d * 10;
 0494 8AE0              ldi R24,10
 0496 869F              mul R24,R22
 0498 6A2D              mov R22,R10
 049A 6019              sub R22,R0
 049C                   .dbline 226
 049C           ;       ZLG7290_Download(x+1,0,0,d);
 049C 6A83              std y+2,R22
 049E 2224              clr R2
 04A0 2882              std y+0,R2
 04A2 2227              clr R18
 04A4 042F              mov R16,R20
 04A6 0F5F              subi R16,255    ; addi 1
 04A8 BFDE              xcall _ZLG7290_Download
 04AA                   .dbline -2
 04AA                   .dbline 227
 04AA           ; }
 04AA           L125:
 04AA 2396              adiw R28,3
 04AC 0E940000          xcall pop_gset3
 04B0                   .dbline 0 ; func end
 04B0 0895              ret
 04B2                   .dbsym r d 22 c
 04B2                   .dbsym r dat 10 c
 04B2                   .dbsym r x 20 c
 04B2                   .dbend
 04B2                   .dbfunc e DispHexValue _DispHexValue fV
 04B2           ;              d -> R22
 04B2           ;            dat -> R10
 04B2           ;              x -> R20
                        .even
 04B2           _DispHexValue::
 04B2 0E940000          xcall push_gset3
 04B6 A22E              mov R10,R18
 04B8 402F              mov R20,R16
 04BA 2397              sbiw R28,3
 04BC                   .dbline -1
 04BC                   .dbline 237
 04BC           ; 
 04BC           ; /*
 04BC           ; 函数:DispHexValue()
 04BC           ; 功能:以16进制方式显示数值
 04BC           ; 参数:
 04BC           ;       x:显示位置,取值0~6
 04BC           ;       dat:要显示的数据,取值0~255
 04BC           ; */
 04BC           ; void DispHexValue(uchar x, uchar dat)
 04BC           ; {
 04BC                   .dbline 239
 04BC           ;       uchar d;
 04BC           ;       d = dat / 16;
 04BC 10E1              ldi R17,16
 04BE 0A2D              mov R16,R10
 04C0 0E940000          xcall div8u
 04C4 602F              mov R22,R16
 04C6                   .dbline 240
 04C6           ;       ZLG7290_Download(x,0,0,d);
 04C6 6A83              std y+2,R22
 04C8 2224              clr R2
 04CA 2882              std y+0,R2
 04CC 2227              clr R18
 04CE 042F              mov R16,R20
 04D0 ABDE              xcall _ZLG7290_Download
 04D2                   .dbline 241
 04D2           ;       d = dat - d * 16;
 04D2 80E1              ldi R24,16
 04D4 869F              mul R24,R22
 04D6 6A2D              mov R22,R10
 04D8 6019              sub R22,R0
 04DA                   .dbline 242
 04DA           ;       ZLG7290_Download(x+1,0,0,d);
 04DA 6A83              std y+2,R22
 04DC 2224              clr R2
 04DE 2882              std y+0,R2
 04E0 2227              clr R18
 04E2 042F              mov R16,R20
 04E4 0F5F              subi R16,255    ; addi 1
 04E6 A0DE              xcall _ZLG7290_Download
 04E8                   .dbline -2
 04E8                   .dbline 243
 04E8           ; }
 04E8           L126:
 04E8 2396              adiw R28,3
 04EA 0E940000          xcall pop_gset3
 04EE                   .dbline 0 ; func end
 04EE 0895              ret
 04F0                   .dbsym r d 22 c
 04F0                   .dbsym r dat 10 c
 04F0                   .dbsym r x 20 c
 04F0                   .dbend
 04F0                   .dbfunc e Test_Key _Test_Key fV
 04F0           ;     FnKeyValue -> y+2
 04F0           ;      RepeatCnt -> y+1
 04F0           ;       KeyValue -> y+0
                        .even
 04F0           _Test_Key::
 04F0 2397              sbiw R28,3
 04F2                   .dbline -1
 04F2                   .dbline 250
 04F2           ; 
 04F2           ; /*
 04F2           ; 函数:Test_Key()
 04F2           ; 功能:测试按键功能
 04F2           ; */
 04F2           ; void Test_Key()
 04F2           ; {
 04F2                   .dbline 254
 04F2           ;       uchar KeyValue;
 04F2           ;       uchar RepeatCnt;
 04F2           ;       uchar FnKeyValue;
 04F2           ;       ClearAll();
 04F2 DFDE              xcall _ClearAll
 04F4                   .dbline 255
 04F4           ;       for (;;)
 04F4           L128:
 04F4                   .dbline 256
 04F4                   .dbline 257
 04F4 20901000          lds R2,_FlagINT
 04F8 30901100          lds R3,_FlagINT+1
 04FC 2220              tst R2
 04FE 11F4              brne X4
 0500 3320              tst R3
 0502 C1F3              breq L128
 0504           X4:
 0504                   .dbline 258
 0504                   .dbline 260
 0504 2224              clr R2
 0506 3324              clr R3
 0508 30921100          sts _FlagINT+1,R3
 050C 20921000          sts _FlagINT,R2
 0510                   .dbline 262
 0510 9E01              movw R18,R28
 0512 01E0              ldi R16,1
 0514 57DE              xcall _ZLG7290_ReadReg
 0516                   .dbline 263
 0516 9E01              movw R18,R28
 0518 2F5F              subi R18,255  ; offset = 1
 051A 3F4F              sbci R19,255
 051C 02E0              ldi R16,2
 051E 52DE              xcall _ZLG7290_ReadReg
 0520                   .dbline 264
 0520 9E01              movw R18,R28
 0522 2E5F              subi R18,254  ; offset = 2
 0524 3F4F              sbci R19,255
 0526 03E0              ldi R16,3
 0528 4DDE              xcall _ZLG7290_ReadReg
 052A                   .dbline 266
 052A 2881              ldd R18,y+0
 052C 0027              clr R16
 052E A2DF              xcall _DispValue
 0530                   .dbline 267
 0530 2981              ldd R18,y+1
 0532 03E0              ldi R16,3
 0534 BEDF              xcall _DispHexValue
 0536                   .dbline 268
 0536 2A81              ldd R18,y+2
 0538 06E0              ldi R16,6
 053A BBDF              xcall _DispHexValue
 053C                   .dbline 269
 053C                   .dbline 270
 053C                   .dbline 255
 053C                   .dbline 255
 053C DBCF              xjmp L128
 053E           X5:
 053E                   .dbline -2
 053E           L127:
 053E 2396              adiw R28,3
 0540                   .dbline 0 ; func end
 0540 0895              ret
 0542                   .dbsym l FnKeyValue 2 c
 0542                   .dbsym l RepeatCnt 1 c
 0542                   .dbsym l KeyValue 0 c
 0542                   .dbend
 0542                   .dbfunc e main _main fV
 0542           ;              x -> R20
                        .even
 0542           _main::
 0542 2397              sbiw R28,3
 0544                   .dbline -1
 0544                   .dbline 274
 0544           ;       {
 0544           ;               if ( FlagINT )          //如果有键按下
 0544           ;               {
 0544           ;               //清除中断标志
 0544           ;                       FlagINT = 0;
 0544           ;               //读取键值、连击计数器值、功能键值
 0544           ;                       ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
 0544           ;                       ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
 0544           ;                       ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
 0544           ;               //显示键值、连击计数器值、功能键值
 0544           ;                       DispValue(0,KeyValue);
 0544           ;                       DispHexValue(3,RepeatCnt);
 0544           ;                       DispHexValue(6,FnKeyValue);
 0544           ;               }
 0544           ;       }
 0544           ; }
 0544           ; 
 0544           ; void main()
 0544           ; {
 0544                   .dbline 276
 0544           ;    uchar x;
 0544           ;       SystemInit();           //系统初始化
 0544 B1DE              xcall _SystemInit
 0546 1AC0              xjmp L136
 0548           L135:
 0548                   .dbline 284
 0548           ;       //Test_DispBuf();               //测试直接写显存
 0548           ;       //Test_Download();      //测试下载数据
 0548           ;       //Test_ScanNum();       //测试不同扫描位数
 0548           ;       //Test_Flash();         //测试闪烁功能
 0548           ;       //Test_SegOnOff();      //测试段寻址功能
 0548           ;       //Test_Key();           //测试键盘功能
 0548           ;       while (1)
 0548           ;       {
 0548                   .dbline 285
 0548           ;          for ( x=0; x<8; x++ )
 0548 4427              clr R20
 054A 08C0              xjmp L141
 054C           L138:
 054C                   .dbline 286
 054C                   .dbline 287
 054C 85E0              ldi R24,5
 054E 8A83              std y+2,R24
 0550 2224              clr R2
 0552 2882              std y+0,R2
 0554 21E0              ldi R18,1
 0556 042F              mov R16,R20
 0558 67DE              xcall _ZLG7290_Download
 055A                   .dbline 288
 055A           L139:
 055A                   .dbline 285
 055A 4395              inc R20
 055C           L141:
 055C                   .dbline 285
 055C 4830              cpi R20,8
 055E B0F3              brlo L138
 0560                   .dbline 289
 0560           ;           {
 0560           ;               ZLG7290_Download(x,1,0,5);
 0560           ;            }
 0560           ;           delay1(100);
 0560 04E6              ldi R16,100
 0562 10E0              ldi R17,0
 0564 8DDE              xcall _delay1
 0566                   .dbline 292
 0566           ;         //Test_Key();
 0566           ;         //ZLG7290_Download(0,0,0,4); 
 0566           ;          for ( x=0; x<6; x++ )
 0566 4427              clr R20
 0568 07C0              xjmp L145
 056A           L142:
 056A                   .dbline 293
 056A                   .dbline 294
 056A 242F              mov R18,R20
 056C 0DE0              ldi R16,13
 056E 16DE              xcall _ZLG7290_WriteReg
 0570                   .dbline 295
 0570 04E6              ldi R16,100
 0572 10E0              ldi R17,0
 0574 45DD              xcall _delay
 0576                   .dbline 296
 0576           L143:
 0576                   .dbline 292
 0576 4395              inc R20
 0578           L145:
 0578                   .dbline 292
 0578 4630              cpi R20,6
 057A B8F3              brlo L142
 057C                   .dbline 297
 057C           L136:
 057C                   .dbline 283
 057C E5CF              xjmp L135
 057E           X6:
 057E                   .dbline -2
 057E                   .dbline 298
 057E           ;           {
 057E           ;                 ZLG7290_WriteReg(ZLG7290_ScanNum,x

⌨️ 快捷键说明

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