ktryivza 发表于 2026-1-12 21:24:14

第七集定时器:感觉刚开始看示例还行,后边有点难了,好在可以自动生成需要的
#include <ai8051.h>
#include "ai_usb.h"
#define PRINT_HID

u8 state=0;

void Timer0_Init(void)                //3秒@24.000MHz
{
      TM0PS = 0x5B;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
      AUXR &= 0x7F;                        //定时器时钟12T模式
      TMOD &= 0xF0;                        //设置定时器模式
      TL0 = 0x3F;                              //设置定时初始值
      TH0 = 0x01;                              //设置定时初始值
      TF0 = 0;                              //清除TF0标志
      TR0 = 1;                              //定时器0开始计时
      ET0 = 1;                              //使能定时器0中断
}

void main(){
      int count=1;
    P_SW2 |= 0x80;
   
    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;
      
    usb_init();                                     //USB CDC �ӿ�����
    IE2 |=0X80;
    EA = 1;
    Timer0_Init();
    while (1)
    {
      if (bUsbOutReady)
      {
//            USB_SendData(UsbOutBuffer,OutNumber);   
            printf_usb("1. Read Num:%d\n", OutNumber);
            printf_usb("2. Read Num:%d\n", OutNumber);
            printf_usb("3. Read Num:%d\n", OutNumber);
            printf_usb("4. Read Num:%d\n", OutNumber);
            
            usb_OUT_done();
                        
      }
   if(P32==0){
               if(P32==0){
                         printf_usb("COUNT:%d\r\n",(int)count);
                        count++;
                        while(P32==0);
               }
         }
    }
}

void Timer0_Isr(void) interrupt 1
{
      state=!state;
      P20=state;
}

ktryivza 发表于 2026-1-13 16:48:11

第六集:IO输入,补下,忘发这个贴了。已学完,感觉挺好理解的。
页: 1 [2]
查看完整版本: 我学习AI8051的打卡历程