📄 led.lis
字号:
00C0 06E0 ldi R16,6
00C2 10E0 ldi R17,0
00C4 0E940000 xcall _delay_ms
00C8 .dbline 79
00C8 ; led_contrl_port &=~ (1<<2);
00C8 C298 cbi 0x18,2
00CA .dbline 80
00CA ; }
00CA L10:
00CA .dbline 81
00CA ; }
00CA L9:
00CA .dbline 83
00CA ; //十位
00CA ; if(data>10)
00CA 8AE0 ldi R24,10
00CC 90E0 ldi R25,0
00CE 8617 cp R24,R22
00D0 9707 cpc R25,R23
00D2 98F4 brsh L12
00D4 .dbline 84
00D4 ; {
00D4 .dbline 85
00D4 ; temp=(data%100)/10;
00D4 24E6 ldi R18,100
00D6 30E0 ldi R19,0
00D8 8B01 movw R16,R22
00DA 0E940000 xcall mod16u
00DE 2AE0 ldi R18,10
00E0 30E0 ldi R19,0
00E2 0E940000 xcall div16u
00E6 402F mov R20,R16
00E8 .dbline 86
00E8 ; display_one(1,temp);
00E8 242F mov R18,R20
00EA 01E0 ldi R16,1
00EC 8FDF xcall _display_one
00EE .dbline 87
00EE ; delay_ms(6);
00EE 06E0 ldi R16,6
00F0 10E0 ldi R17,0
00F2 0E940000 xcall _delay_ms
00F6 .dbline 88
00F6 ; led_contrl_port &=~ (1<<1);
00F6 C198 cbi 0x18,1
00F8 .dbline 89
00F8 ; }
00F8 0BC0 xjmp L13
00FA L12:
00FA .dbline 91
00FA ; else
00FA ; {
00FA .dbline 92
00FA ; if(mode==1)
00FA 8A2D mov R24,R10
00FC 8130 cpi R24,1
00FE 41F4 brne L14
0100 .dbline 93
0100 ; {
0100 .dbline 94
0100 ; display_one(1,0);
0100 2227 clr R18
0102 01E0 ldi R16,1
0104 83DF xcall _display_one
0106 .dbline 95
0106 ; delay_ms(6);
0106 06E0 ldi R16,6
0108 10E0 ldi R17,0
010A 0E940000 xcall _delay_ms
010E .dbline 96
010E ; led_contrl_port &=~ (1<<1);
010E C198 cbi 0x18,1
0110 .dbline 97
0110 ; }
0110 L14:
0110 .dbline 98
0110 ; }
0110 L13:
0110 .dbline 100
0110 ; //个位
0110 ; temp=data%10;
0110 2AE0 ldi R18,10
0112 30E0 ldi R19,0
0114 8B01 movw R16,R22
0116 0E940000 xcall mod16u
011A 402F mov R20,R16
011C .dbline 101
011C ; display_one(0,temp);
011C 242F mov R18,R20
011E 0027 clr R16
0120 75DF xcall _display_one
0122 .dbline 102
0122 ; delay_ms(6);
0122 06E0 ldi R16,6
0124 10E0 ldi R17,0
0126 0E940000 xcall _delay_ms
012A .dbline 103
012A ; led_contrl_port &=~ (1<<0);
012A C098 cbi 0x18,0
012C .dbline -2
012C L3:
012C 0E940000 xcall pop_gset3
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbsym r temp 20 c
0132 .dbsym r mode 10 c
0132 .dbsym r data 22 i
0132 .dbend
0132 .dbfunc e led_error _led_error fV
.even
0132 _led_error::
0132 .dbline -1
0132 .dbline 225
0132 ; }
0132 ;
0132 ; /***********************
0132 ; ** 显示四位浮点数
0132 ; ** 输入:要显示的四位数
0132 ; ** 说明:可以小于四位数,自动补零
0132 ; 没有调通
0132 ; ************************/
0132 ; /*
0132 ; void display_float(float data)
0132 ; {
0132 ; uint8 temp;
0132 ; // 人为保证data的值,可以不要错误处理。
0132 ; if (data>1000)
0132 ; {
0132 ; led_error();
0132 ; break;
0132 ; }
0132 ; if (data<0)
0132 ; {
0132 ; led_error();
0132 ; break;
0132 ; }
0132 ; //
0132 ; if(data<1) //比如 0.123
0132 ; {
0132 ; display_one(3,0); //显示0.
0132 ; led_port |= 0x07; //点亮对应小数点
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<3);
0132 ;
0132 ; temp=(data*10); // 0.123*10 = 1
0132 ; display_one(2,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<2);
0132 ;
0132 ; temp=(data*100)%10; // 0.123*100%10 = 2
0132 ; display_one(1,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<1);
0132 ;
0132 ; temp=(data*1000)%10; // 0.123*100%10 = 3
0132 ; display_one(0,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<0);
0132 ; }
0132 ; else if(data<10) //比如1.234
0132 ; {
0132 ; temp=(data/1); // 1.234/1 = 1
0132 ; display_one(3,temp);
0132 ; led_port |= 0x07; //点亮对应小数点
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<3);
0132 ; //第一位小数
0132 ; temp=(data*10)%10; // 1.234*10%10 = 2
0132 ; display_one(2,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<2);
0132 ; //第二位小数
0132 ; temp=(data*100)%10; // 1.234*100%10 = 3
0132 ; display_one(1,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<1);
0132 ; //第三位小数
0132 ; temp=(data*1000)%10; // 1.234*1000%10 = 4
0132 ; display_one(0,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<0);
0132 ; }
0132 ; else if(data<100) // 例如12.34
0132 ; {
0132 ; temp=(data/10); // 12.34/10=1
0132 ; display_one(3,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<3);
0132 ;
0132 ; temp=(data%10); // 12.34%10=2
0132 ; display_one(2,temp);
0132 ; led_port |= 0x07; //点亮对应小数点
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<2);
0132 ;
0132 ; temp=(data*10)%10; // 12.34*10%10=3
0132 ; display_one(1,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<1);
0132 ;
0132 ; temp=(data*100)%10;// 12.34*100%10=4
0132 ; display_one(0,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<0);
0132 ; }
0132 ; else if(data<1000) //比如123.4
0132 ; {
0132 ; temp=(data/100);// 123.4/100=1
0132 ; display_one(3,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<3);
0132 ;
0132 ; temp=(data%100)/10;// 123.4%100/10=2
0132 ; display_one(2,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<2);
0132 ;
0132 ; temp=(data%10);// 123.4%10=3
0132 ; display_one(1,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<1);
0132 ;
0132 ; temp=(data*10)%10;// 123.4*10%10=4
0132 ; display_one(0,temp);
0132 ; delay_ms(6);
0132 ; led_contrl_port &=~ (1<<0);
0132 ; }
0132 ; else led_error();
0132 ; }
0132 ; */
0132 ; /***********************************************
0132 ; ** 异常处理,led全亮 8。8。8。8。
0132 ; ***********************************************/
0132 ; void led_error(void)
0132 ; {
0132 .dbline 227
0132 ; // 以下两句将会使LED全亮,如果立即更改状态,将看不出来效果
0132 ; led_port = 0xFF;
0132 8FEF ldi R24,255
0134 8BBB out 0x1b,R24
0136 .dbline 228
0136 ; led_contrl_port |= (1<<led_a)|(1<<led_b)|(1<<led_c)|(1<<led_d);
0136 88B3 in R24,0x18
0138 8F60 ori R24,15
013A 88BB out 0x18,R24
013C .dbline -2
013C L16:
013C .dbline 0 ; func end
013C 0895 ret
013E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -