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

📄 hand_serial_all.lst

📁 c8051单片机使用smbus(I2C)接口的测试程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 199   2        }
 200   1        ES0=1;
 201   1      }
 202          
 203          void putstring_com_0(BYTE  *c)
 204          {
 205   1        for (;*c!=0;c++)   //遇到停止符0结束
 206   1        putbyte_com_0(*c);
 207   1      }
 208          
 209          void puthex_com_0(BYTE c)
 210          {
 211   1        int ch;
 212   1        putbyte_com_0(' ');
 213   1        putbyte_com_0('0');
 214   1        putbyte_com_0('x');
 215   1        ch=(c>>4)&0x0f;
 216   1        putbyte_com_0(hex_[ch]);
 217   1        ch=c&0x0f;
 218   1        putbyte_com_0(hex_[ch]);
 219   1      }
 220          
 221          BYTE getbyte_com_0(void)
 222          {
 223   1        char c;
 224   1        ES0=0;
 225   1        while(recv_buff_com_0.empty);
 226   1      //  c=get_char_from_buff(&recv_buff_com_0);
 227   1      
 228   1        c=recv_buff_com_0.buffer_ptr[recv_buff_com_0.read_index++];
 229   1        recv_buff_com_0.read_index = recv_buff_com_0.read_index%recv_buff_com_0.ring_buffer_len;
 230   1        if(recv_buff_com_0.read_index==recv_buff_com_0.write_index)
 231   1          recv_buff_com_0.empty=1;
 232   1        else recv_buff_com_0.empty=0;
 233   1      
 234   1        ES0=1;
 235   1        return(c);
 236   1      }
 237          
 238          //串口1函数
 239          void putbyte_com_1(char c)
 240          {
 241   1        ES1_OFF;
C51 COMPILER V7.02a   HAND_SERIAL_ALL                                                      07/08/2003 15:36:23 PAGE 5   

 242   1        send_buff_com_1.buffer_ptr[send_buff_com_1.write_index++] = c;
 243   1        send_buff_com_1.write_index = send_buff_com_1.write_index%send_buff_com_1.ring_buffer_len;
 244   1        if(send_buff_com_1.read_index==send_buff_com_1.write_index)
 245   1          send_buff_com_1.empty=1;
 246   1        else send_buff_com_1.empty=0;
 247   1        
 248   1        if(send_idle_com_1==1)
 249   1        {
 250   2          TI1_ON;
 251   2          send_idle_com_1=0;
 252   2        }
 253   1        ES1_ON;
 254   1      }
 255          
 256          void putstring_com_1(BYTE  *c)
 257          {
 258   1        for (;*c!=0;c++)   //遇到停止符0结束
 259   1        putbyte_com_1(*c);
 260   1      }
 261          
 262          void puthex_com_1(BYTE c)
 263          {
 264   1        int ch;
 265   1        putbyte_com_1(' ');
 266   1        putbyte_com_1('0');
 267   1        putbyte_com_1('x');
 268   1        ch=(c>>4)&0x0f;
 269   1        putbyte_com_1(hex_[ch]);
 270   1        ch=c&0x0f;
 271   1        putbyte_com_1(hex_[ch]);
 272   1      }
 273          
 274          BYTE getbyte_com_1(void)
 275          {
 276   1        char c;
 277   1        ES1_OFF;
 278   1        while(recv_buff_com_1.empty);
 279   1      //  c=get_char_from_buff(&recv_buff_com_0);
 280   1      
 281   1        c=recv_buff_com_1.buffer_ptr[recv_buff_com_1.read_index++];
 282   1        recv_buff_com_1.read_index = recv_buff_com_1.read_index%recv_buff_com_1.ring_buffer_len;
 283   1        if(recv_buff_com_1.read_index==recv_buff_com_1.write_index)
 284   1          recv_buff_com_1.empty=1;
 285   1        else recv_buff_com_1.empty=0;
 286   1      
 287   1        ES1_ON;
 288   1        return(c);
 289   1      }
 290          
 291          
 292          //处理定时器函数-begin
 293          void init_timer(type_of_timer *l_timer)
 294          {
 295   1        l_timer->active=0;
 296   1        l_timer->timer_off=0;
 297   1        l_timer->timer_value=0;
 298   1      } 
 299          
 300          void opentimer(type_of_timer *l_timer,int l_timer_value)
 301          {
 302   1        l_timer->active=1;
 303   1        l_timer->timer_value=l_timer_value;
C51 COMPILER V7.02a   HAND_SERIAL_ALL                                                      07/08/2003 15:36:23 PAGE 6   

 304   1        l_timer->timer_off=0;
 305   1      }
 306          
 307          void closetimer(type_of_timer *l_timer)
 308          {
 309   1        l_timer->active=0;
 310   1        l_timer->timer_off=0;
 311   1      }
 312          //处理定时器函数-end
 313          
 314          void delay_10ms(BYTE l_10ms_times) 
 315          {
 316   1        Count10ms=l_10ms_times;
 317   1        while(Count10ms);
 318   1      }
 319          
 320          
 321          
 322          /*
 323          void PORT_Init (void)
 324          {
 325            XBR0    = 0x07;                     // Enable UART0
 326            XBR1    = 0x00;
 327            XBR2    = 0x04;                     //enable UART1
 328            
 329            XBR2    |= 0x40;                     // Enable crossbar and weak pull-ups
 330          
 331            P0MDOUT |= 0x01;                    // enable TX0 as a push-pull output
 332            P1MDOUT |= 0x01;                    // enable P1 as push-pull output
 333            P2MDOUT |= 0x3e;
 334            P3MDOUT |= 0xff;
 335            
 336            EMI0CF=0x23;            //只使用内部XRAM P53  
 337          }
 338          
 339          void SYSCLK_Init (void)
 340          {
 341            int i;                              // delay counter
 342            
 343            OSCXCN = 0x27;                      // start external oscillator with
 344            for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
 345          //   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
 346            OSCICN = 0x08;                      // select external oscillator as SYSCLK
 347                                                 // source and enable missing clock
 348                                                 // detector
 349            CKCON =0x00;          //定义4个定时器的时钟滴答为系统钟的12分频   p187                                 
 350           //CKCON=0x78;
 351          }
 352          
 353          
 354          
 355          void main(void)
 356          {
 357            BYTE idata l_char;
 358          
 359            WDTCN = 0xde;                       // disable watchdog timer
 360            WDTCN = 0xad;
 361            
 362            SYSCLK_Init ();                     // initialize oscillator
 363            PORT_Init();  
 364            
 365            serial_init();
C51 COMPILER V7.02a   HAND_SERIAL_ALL                                                      07/08/2003 15:36:23 PAGE 7   

 366            
 367            EA=1;
 368          
 369            putstring_com_0("1,com0,9600,n/8/1  ");
 370            putstring_com_1("2,com0,9600,n/8/1  ");
 371            
 372            while(1)
 373            {
 374              PCON|=0x01; //idle模式
 375          
 376              if(!if_empty_com_0())
 377              {
 378                l_char=getbyte_com_0();
 379                putbyte_com_0(l_char);  
 380              } 
 381              if(!if_empty_com_1())
 382              {
 383                l_char=getbyte_com_1();
 384                putbyte_com_1(l_char);  
 385              } 
 386            }
 387          }
 388          */
 389          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2231    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   1071    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      3    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -