小狐狸 发表于 2023-10-6 01:08:48

定时器内部能使用main函数定义的变量吗?
调用其他地方定义的函数也报错。

gentleman 发表于 2023-10-6 07:50:22

小狐狸 发表于 2023-10-6 01:08
定时器内部能使用main函数定义的变量吗?
调用其他地方定义的函数也报错。 ...

肯定不能调用啊,变量定义放到main 函数前面。

Prefect 发表于 2023-10-14 08:39:11

void main()                                        //程序开始运行的入口
{

        sys_init();                                //USB功能+IO口初始化
        usb_init();                                //usb库初始化
//        EUSB = 1;
Timer0_Init();        //定时器0初始化
        ADC_Init();
        EA = 1;                                        //CPU开放中断,打开总中断。
//
        delay_ms(2000);
        P40 = 0;

       
        while(1)                //死循环
        {
          printf("Flag%d",1);
                if( DeviceState != DEVSTATE_CONFIGURED )
      continue;
                if( bUsbOutReady )                                                               
                {
                       
//                        USB_SendData(UsbOutBuffer,OutNumber);
                       usb_OUT_done();
                       
                }
    printf("Flag%d",1);
                if( TIM_10MS_Flag==1 )                                                                        //如果10ms到了
                {
                        TIM_10MS_Flag = 0;
               
      Time++;                        //清空标志位
          if(clock_time>=1000)
       {clock_time=0;
                          Clock_Sec++;
                       }
                        if(Clock_Sec>=60)
                        {Clock_Sec=0;
                               Clock_minute++;
      }
                        if(Clock_minute>=60)
                                {Clock_minute=0;
                                       Clock_hour++;
                                }
                        if(Clock_hour>=24)
                                {
                                        Clock_hour=0;
                                }
                               
               
                }
               
               switch(Flag)
      {
                                case 0:        for(i=0;i<8;i++){delay_ms(200);P6=~(0X01<<i);}break;
                          case 1: for(i=0;i<8;i++){delay_ms(200);P6=~(0X80>>i);}break;
                          case 2: DongHua_Show(1,100);DongHua_Show(2,100);DongHua_Show(3,100);DongHua_Show(4,100);break;
                                case 3: Clock_InitShow(Clock_hour,Clock_minute,Clock_Sec);break;
                          case 4: BEEP=0; break;
                                case 5: BEEP=1; break;
                        }               
                       
        }
}


void Timer0_Isr(void) interrupt 1
{
        static timcount = 0;
if((Flag==2)||(Flag==3))SEG_LED_Show();
       timcount++;                                //1ms+1
       clock_time++;
        if( timcount>=10 )                //如果这个变量大于等于10,10ms计数到达
        {
                timcount = 0;
                TIM_10MS_Flag = 1;        //10ms时间到了       
        }
       
}
void Timer1_Isr(void) interrupt 3
{static u16 Timer1;
          Timer1++;
        if(Timer1>=2000)
        { Timer1=0;
//   Flag=ADC_KeyRead(ADC_Read(0));
// printf("Flag%d",ADC_Read(0));
   P60=~P60;
        }
}

void sys_init()                //函数定义
{
    WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

          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;   //设置为准双向口
       
    P3M0 = 0x00;
    P3M1 = 0x00;

    P3M0 &= ~0x03;
    P3M1 |= 0x03;

          USBCON = 0X00;                                        //usb初始化
          USBCLK = 0X00;
          IRC48MCR = 0X00;
          delay_ms(10);

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));//等待时钟稳定

    USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;

       


}


void delay_ms(u16 ms)        //unsigned int
{
        u16 i;
        do
        {
                i = MAIN_Fosc/6000;
                while(--i);
        }while(--ms);
}
void Timer0_Init(void)                //1毫秒@24.000MHz
{
        AUXR |= 0xc1;                        //定时器时钟1T模式
        TMOD = 0x00;                        //设置定时器模式
        TL0 = 0x40;                                //设置定时初始值
        TH0 = 0xA2;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时
        ET0 = 1;                                //使能定时器0中断

//        IP = 0X02;                                //设置为最高优先级
//        IPH = 0X02;

        TL1 = 0x40;                                //设置定时初始值
        TH1 = 0xA2;                                //设置定时初始值
        TF1 = 0;                                //清除TF1标志
        TR1 = 1;                                //定时器1开始计时
        ET1 = 1;                                //使能定时器1中断
}
/***********************************************************************************/
冲哥救命啊,我这写了个程序,只要启动定时器一,跑这个printf("Flag%d",1);语句,只要是下载软件不打开串口接收,感觉单片机就死在这里了,但是定时器还正常跑,我一打开
串口接收程序全部正常,不开串口程序就死在这个printf这里,找了一天多了还没找到具体问题,看手册看视频还是没解决,救命啊冲哥!

电子DIY小家 发表于 2023-10-16 08:16:53

Prefect 发表于 2023-10-14 08:39
void main()                                        //程序开始运行的入口
{





你这里有等待UCB连接成功的判断如果不需要这个USB-CDC的话,把程序里的USB有关的代码都去掉就好了,

langshuang 发表于 2023-10-26 10:46:17

请问下 冲哥,第一课点亮就报错了,Rebuild target 'Sample'
compiling main.c...
main.c(52): error C25: syntax error near 'sfr'
Target not created.
Build Time Elapsed:00:00:00
大佬帮忙看看

langshuang 发表于 2023-10-26 11:05:25

求助冲哥, main.c(52): error C25: syntax error near 'sfr'报错怎么办啊

电子DIY小家 发表于 2023-10-26 15:47:05

langshuang 发表于 2023-10-26 11:05
求助冲哥, main.c(52): error C25: syntax error near 'sfr'报错怎么办啊

少了个分号

电子DIY小家 发表于 2023-10-26 15:47:29

langshuang 发表于 2023-10-26 10:46
请问下 冲哥,第一课点亮就报错了,Rebuild target 'Sample'
compiling main.c...
main.c(52): error C25:...

少了个分号

langshuang 发表于 2023-10-27 10:22:44

求助冲哥,请问视频里#include "stc.h"
#include "usb.h" 这里头文件从哪里下载啊,我引入失败了{:cry:}

电子DIY小家 发表于 2023-10-27 20:52:28

langshuang 发表于 2023-10-27 10:22
求助冲哥,请问视频里#include "stc.h"
#include "usb.h" 这里头文件从哪里下载啊,我引入失败了 ...

我是从历程包里复制出来的,你也可以从我的历程包里复制出来
页: 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27
查看完整版本: 冲哥32位8051视频教程疑问解答贴