📄 dac_tlc5615.lis
字号:
016C ; case 0xdd:return 9; //按键9
016C 09E0 ldi R16,9
016E 0DC0 xjmp L21
0170 L35:
0170 .dbline 112
0170 ; case 0xbd:return 10; //按键A
0170 0AE0 ldi R16,10
0172 0BC0 xjmp L21
0174 L36:
0174 .dbline 113
0174 ; case 0x7d:return 11; //按键B
0174 0BE0 ldi R16,11
0176 09C0 xjmp L21
0178 L37:
0178 .dbline 114
0178 ; case 0xee:return 12; //按键C
0178 0CE0 ldi R16,12
017A 07C0 xjmp L21
017C L38:
017C .dbline 115
017C ; case 0xde:return 13; //按键D
017C 0DE0 ldi R16,13
017E 05C0 xjmp L21
0180 L39:
0180 .dbline 116
0180 ; case 0xbe:return 14; //按键E
0180 0EE0 ldi R16,14
0182 03C0 xjmp L21
0184 L40:
0184 .dbline 117
0184 ; case 0x7e:return 15; //按键F
0184 0FE0 ldi R16,15
0186 01C0 xjmp L21
0188 L22:
0188 .dbline 118
0188 ; default: return 16; //无按键按下
0188 00E1 ldi R16,16
018A .dbline -2
018A L21:
018A .dbline 0 ; func end
018A 5991 ld R21,y+
018C 4991 ld R20,y+
018E 0895 ret
0190 .dbsym r key 16 c
0190 .dbend
0190 .dbfunc e Display_One_SMG _Display_One_SMG fV
0190 ; data -> R12
0190 ; bit -> R10
.even
0190 _Display_One_SMG::
0190 0E940000 xcall push_xgset003C
0194 C22E mov R12,R18
0196 A02E mov R10,R16
0198 .dbline -1
0198 .dbline 129
0198 ; }
0198 ; }
0198 ; /*******************************************************/
0198 ; /****** 函数名称: Display_One_SMG() ******/
0198 ; /****** 功 能: 显示指定内容在指定位 ******/
0198 ; /****** 参 数: bit--位(1-8), ******/
0198 ; /****** data--显示内容(0-15,16为全灭)****/
0198 ; /****** 返回值 : 无 ******/
0198 ; /*******************************************************/
0198 ; void Display_One_SMG(unsigned char bit,unsigned char data)
0198 ; {
0198 .dbline 130
0198 ; SMG=SMG_Conver[data]; //送显示数据
0198 80E0 ldi R24,<_SMG_Conver
019A 90E0 ldi R25,>_SMG_Conver
019C EC2D mov R30,R12
019E FF27 clr R31
01A0 E80F add R30,R24
01A2 F91F adc R31,R25
01A4 2490 lpm R2,Z
01A6 28BA out 0x18,R2
01A8 .dbline 131
01A8 ; Open_SMG_DATA; //锁存数据
01A8 DB9A sbi 0x1b,3
01AA .dbline 132
01AA ; Close_SMG_DATA;
01AA DB98 cbi 0x1b,3
01AC .dbline 133
01AC ; SMG=~BIT(bit); //送位数据
01AC 01E0 ldi R16,1
01AE 1A2D mov R17,R10
01B0 0E940000 xcall lsl8
01B4 202E mov R2,R16
01B6 2094 com R2
01B8 28BA out 0x18,R2
01BA .dbline 134
01BA ; Open_SMG_BIT; //锁存数据
01BA DA9A sbi 0x1b,2
01BC .dbline 135
01BC ; Close_SMG_BIT;
01BC DA98 cbi 0x1b,2
01BE .dbline 136
01BE ; delay_nms(2);
01BE 02E0 ldi R16,2
01C0 10E0 ldi R17,0
01C2 2CDF xcall _delay_nms
01C4 .dbline -2
01C4 L44:
01C4 .dbline 0 ; func end
01C4 0C940000 xjmp pop_xgset003C
01C8 .dbsym r data 12 c
01C8 .dbsym r bit 10 c
01C8 .dbend
01C8 .dbfunc e Display_One_SMG_Point _Display_One_SMG_Point fV
01C8 ; bit -> R10
.even
01C8 _Display_One_SMG_Point::
01C8 AA92 st -y,R10
01CA BA92 st -y,R11
01CC A02E mov R10,R16
01CE .dbline -1
01CE .dbline 144
01CE ; }
01CE ; /*******************************************************/
01CE ; /****** 函数名称: Display_One_SMG_Point() ******/
01CE ; /****** 功 能: 显示小数点在指定位 ******/
01CE ; /****** 返回值 : 无 ******/
01CE ; /*******************************************************/
01CE ; void Display_One_SMG_Point(unsigned char bit)
01CE ; {
01CE .dbline 145
01CE ; SMG=0x80; //送显示数据
01CE 80E8 ldi R24,128
01D0 88BB out 0x18,R24
01D2 .dbline 146
01D2 ; Open_SMG_DATA; //锁存数据
01D2 DB9A sbi 0x1b,3
01D4 .dbline 147
01D4 ; Close_SMG_DATA;
01D4 DB98 cbi 0x1b,3
01D6 .dbline 148
01D6 ; SMG=~BIT(bit); //送位数据
01D6 01E0 ldi R16,1
01D8 1A2D mov R17,R10
01DA 0E940000 xcall lsl8
01DE 202E mov R2,R16
01E0 2094 com R2
01E2 28BA out 0x18,R2
01E4 .dbline 149
01E4 ; Open_SMG_BIT; //锁存数据
01E4 DA9A sbi 0x1b,2
01E6 .dbline 150
01E6 ; Close_SMG_BIT;
01E6 DA98 cbi 0x1b,2
01E8 .dbline 151
01E8 ; delay_nms(2);
01E8 02E0 ldi R16,2
01EA 10E0 ldi R17,0
01EC 17DF xcall _delay_nms
01EE .dbline -2
01EE L45:
01EE .dbline 0 ; func end
01EE B990 ld R11,y+
01F0 A990 ld R10,y+
01F2 0895 ret
01F4 .dbsym r bit 10 c
01F4 .dbend
01F4 .dbfunc e En_Led _En_Led fV
.even
01F4 _En_Led::
01F4 .dbline -1
01F4 .dbline 160
01F4 ; }
01F4 ; /*******************************************************/
01F4 ; /****** 函数名称: En_Led() ******/
01F4 ; /****** 功 能: 使能LED功能 ******/
01F4 ; /****** 参 数: 无 ******/
01F4 ; /****** 返回值 : 无 ******/
01F4 ; /*******************************************************/
01F4 ; void En_Led(void)
01F4 ; {
01F4 .dbline 161
01F4 ; DDRB=0xff; //设置输出
01F4 8FEF ldi R24,255
01F6 87BB out 0x17,R24
01F8 .dbline 162
01F8 ; PORTB=0xff; //输出高电平
01F8 88BB out 0x18,R24
01FA .dbline 163
01FA ; Open_LED; //打开LED功能
01FA DC9A sbi 0x1b,4
01FC .dbline -2
01FC L46:
01FC .dbline 0 ; func end
01FC 0895 ret
01FE .dbend
01FE .dbfunc e Un_Led _Un_Led fV
.even
01FE _Un_Led::
01FE .dbline -1
01FE .dbline 172
01FE ; }
01FE ; /*******************************************************/
01FE ; /****** 函数名称: Un_Led() ******/
01FE ; /****** 功 能: 关闭LED功能 ******/
01FE ; /****** 参 数: 无 ******/
01FE ; /****** 返回值 : 无 ******/
01FE ; /*******************************************************/
01FE ; void Un_Led(void)
01FE ; {
01FE .dbline 173
01FE ; DDRB=0xff; //设置输出
01FE 8FEF ldi R24,255
0200 87BB out 0x17,R24
0202 .dbline 174
0202 ; PORTB=0xff; //输出高电平
0202 88BB out 0x18,R24
0204 .dbline 175
0204 ; Open_LED; //打开LED功能
0204 DC9A sbi 0x1b,4
0206 .dbline 176
0206 ; Close_LED; //关闭LED功能
0206 DC98 cbi 0x1b,4
0208 .dbline -2
0208 L47:
0208 .dbline 0 ; func end
0208 0895 ret
020A .dbend
020A .dbfunc e Clear_SMG _Clear_SMG fV
.even
020A _Clear_SMG::
020A .dbline -1
020A .dbline 185
020A ; }
020A ; /*******************************************************/
020A ; /****** 函数名称: Clear_SMG() ******/
020A ; /****** 功 能: 关闭数码管功能 ******/
020A ; /****** 参 数: 无 ******/
020A ; /****** 返回值 : 无 ******/
020A ; /*******************************************************/
020A ; void Clear_SMG(void)
020A ; {
020A .dbline 186
020A ; DDRB=0xff; //设置输出
020A 8FEF ldi R24,255
020C 87BB out 0x17,R24
020E .dbline 187
020E ; PORTB=0x00; //输出高电平
020E 2224 clr R2
0210 28BA out 0x18,R2
0212 .dbline 188
0212 ; Open_SMG_DATA; //锁存数据
0212 DB9A sbi 0x1b,3
0214 .dbline 189
0214 ; Close_SMG_DATA;
0214 DB98 cbi 0x1b,3
0216 .dbline 190
0216 ; Open_SMG_BIT;
0216 DA9A sbi 0x1b,2
0218 .dbline 191
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -