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