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

📄 led.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -