📄 system.lis
字号:
0040 F91F adc R31,R25
0042 E491 lpm R30,Z
0044 E0930900 sts _PortBuffer+1,R30
0048 .dbline 105
0048 ; }
0048 .dbline -2
0048 L1:
0048 00D0 rcall pop_gset1
004A .dbline 0 ; func end
004A 0895 ret
004C .dbsym r LocalTime 20 c
004C .dbend
004C .dbfunc e Port_refresh _Port_refresh fV
004C ; i -> R16
.even
004C _Port_refresh::
004C .dbline -1
004C .dbline 115
004C ; }
004C ;
004C ; /***********************************************************
004C ; * 函数说明:端口通讯程序 *
004C ; * 输入: 无 *
004C ; * 输出: 无 *
004C ; * 调用函数: *
004C ; ***********************************************************/
004C ; void Port_refresh (void)
004C ; {
004C .dbline 118
004C ; unsigned char i;
004C ;
004C ; SS_Low; //模拟#SS的下跳沿
004C 2A98 cbi 0x5,2
004E .dbline 120
004E ;
004E ; for (i=0; i<ExtPortNum; i++)
004E 0027 clr R16
0050 0CC0 rjmp L11
0052 L8:
0052 .dbline 121
0052 ; {
0052 .dbline 122
0052 ; SPDR = PortBuffer[i]; //刷新虚拟端口的一个字节
0052 80E0 ldi R24,<_PortBuffer
0054 90E0 ldi R25,>_PortBuffer
0056 E02F mov R30,R16
0058 FF27 clr R31
005A E80F add R30,R24
005C F91F adc R31,R25
005E 2080 ldd R2,z+0
0060 2EBC out 0x2e,R2
0062 L12:
0062 .dbline 123
0062 L13:
0062 .dbline 123
0062 2DB4 in R2,0x2d
0064 27FE sbrs R2,7
0066 FDCF rjmp L12
0068 .dbline 124
0068 L9:
0068 .dbline 120
0068 0395 inc R16
006A L11:
006A .dbline 120
006A 0330 cpi R16,3
006C 90F3 brlo L8
006E .dbline 126
006E ; while(!(SPSR&(1<<SPIF))); //等待通讯完成
006E ; }
006E ;
006E ; SS_High; //模拟#SS的上跳沿
006E 2A9A sbi 0x5,2
0070 .dbline -2
0070 L7:
0070 .dbline 0 ; func end
0070 0895 ret
0072 .dbsym r i 16 c
0072 .dbend
0072 .dbfunc e main _main fV
.even
0072 _main::
0072 .dbline -1
0072 .dbline 136
0072 ; }
0072 ;
0072 ; /***********************************************************
0072 ; * 函数说明:主函数 *
0072 ; * 输入: 无 *
0072 ; * 输出: 无 *
0072 ; * 调用函数:System_INIT() *
0072 ; ***********************************************************/
0072 ; void main(void)
0072 ; {
0072 .dbline 137
0072 ; System_INIT(); //代码初始化
0072 00D0 rcall _System_INIT
0074 .dbline 139
0074 ;
0074 ; LEDDisBuffer[0] = 0x00;
0074 2224 clr R2
0076 20920000 sts _LEDDisBuffer,R2
007A .dbline 140
007A ; LEDDisBuffer[1] = 0x01;
007A 81E0 ldi R24,1
007C 80930100 sts _LEDDisBuffer+1,R24
0080 .dbline 141
0080 ; LEDDisBuffer[2] = 0x02;
0080 82E0 ldi R24,2
0082 80930200 sts _LEDDisBuffer+2,R24
0086 .dbline 142
0086 ; LEDDisBuffer[3] = 0x03;
0086 83E0 ldi R24,3
0088 80930300 sts _LEDDisBuffer+3,R24
008C .dbline 143
008C ; LEDDisBuffer[4] = 0x04;
008C 84E0 ldi R24,4
008E 80930400 sts _LEDDisBuffer+4,R24
0092 .dbline 144
0092 ; LEDDisBuffer[5] = 0x05;
0092 85E0 ldi R24,5
0094 80930500 sts _LEDDisBuffer+5,R24
0098 .dbline 145
0098 ; LEDDisBuffer[6] = 0x06;
0098 86E0 ldi R24,6
009A 80930600 sts _LEDDisBuffer+6,R24
009E .dbline 146
009E ; LEDDisBuffer[7] = 0x07;
009E 87E0 ldi R24,7
00A0 80930700 sts _LEDDisBuffer+7,R24
00A4 09C0 rjmp L24
00A6 L23:
00A6 .dbline 149
00A6 ;
00A6 ; while(TRUE) //超级循环
00A6 ; {
00A6 .dbline 150
00A6 ; if (DoTime==TRUE)
00A6 80910000 lds R24,_DoTime
00AA 8130 cpi R24,1
00AC 29F4 brne L26
00AE .dbline 151
00AE ; {
00AE .dbline 152
00AE ; DoTime=FALSE;
00AE 2224 clr R2
00B0 20920000 sts _DoTime,R2
00B4 .dbline 153
00B4 ; LEDDisplay();
00B4 A5DF rcall _LEDDisplay
00B6 .dbline 154
00B6 ; Port_refresh();
00B6 CADF rcall _Port_refresh
00B8 .dbline 155
00B8 ; }
00B8 L26:
00B8 .dbline 156
00B8 L24:
00B8 .dbline 148
00B8 F6CF rjmp L23
00BA X0:
00BA .dbline -2
00BA L15:
00BA .dbline 0 ; func end
00BA 0895 ret
00BC .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-显示驱动测试\System.c
0000 _LEDDisBuffer::
0000 .blkb 8
0008 .dbsym e LEDDisBuffer _LEDDisBuffer A[8:8]c
0008 _PortBuffer::
0008 .blkb 3
000B .dbsym e PortBuffer _PortBuffer A[3:3]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -