angmall 发表于 2023-4-24 21:06 谢谢大神, 编译通过了. |
给你改了一下试试 ![]()
|
angmall 发表于 2023-4-24 18:47 是的,基于C51的频率计100兆赫频率计,就是想编译一下固件. |
Hephaestus 发表于 2023-4-24 18:23 我把程序放上来,大神看看能不能编译 |
10.93 MB, 下载次数: 4
你这个是韩的频率计 开源的基于C51的频率计100兆赫频率计数器/脉冲计数器 本机为使用8051的8位100MHz的频率计数器。 8051内部16比特计数器及外部12比特(其中74F161 4比特, 74HC393 8比特)共 28 比特计数器,8位数字显示100MHz频率计数器。 |
51hei3.gif (25.12 KB, 下载次数: 84)
51hei1.gif (29.02 KB, 下载次数: 79)
51hei2.gif (23.44 KB, 下载次数: 87)
51hei0.gif (23.53 KB, 下载次数: 82)
你这个是韩的频率计 8051内部16比特计数器及外部12比特(其中74F161 4比特, 74HC393 8比特)共 28 比特计数器,8位数字显示100MHz频率计数器。 |
hmsd 发表于 2023-4-24 17:11 版本新了可能还不好用,过期好办,放虚拟机里面运行,给个假时间就可以了。 |
angmall 发表于 2023-4-24 18:09 os.h头文件 //系统头文件(os.h) #include"c8051f.h" #include"OS_INIT_SP.H" //系统初始化头文件 #include"Init_Task.h" #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define SYSCLK 11059200 //晶振频率 #define SYTIMEISR 50 //系统时钟中断时间(ms) #define NULL (void *)0L #define OK 1 /*任务状态*/ #define WAIT_MSG 0X00 #define WAIT_TIME 0X01 #define READY 0X02 #define TEST 1 //测试代码条件编译 /*任务表*/ typedef struct task_b { uchar xdata *sp_start; //任务堆栈底指针 uchar sp_size; //任务堆栈长度 uchar flg; //任务状态 //uchar prio; //任务指针 //struct task_msg *msg ; //任务接收消息结构体指针 uchar timedal; //任务挂起延迟时间 }task_link; extern task_link xdata OSPCB[N+1]; //TASK zhuang tai link /*操作系统全局变量*/ extern uchar data Prio; //当前运行的任务优先级 extern uchar data *spend; //系统堆栈底指针 extern uchar data ISR_num; //中断嵌套次数 extern uchar data OSRdyGrp; //任务就绪表全局变量 extern uchar data OSRdyTab[TASK_8N];//任务优先级表1 extern uchar code OSMapTab[8]; //任务优先级表2 extern uchar code OSUnMapTab[256]; //任务优先级表3 /*操作系统全局函数*/ extern void Task_Init(uchar i,void(*addr)(void),uchar xdata *Task_sta);//系统初始化函数 extern void OS_RdyTask(uchar prio); //使一个任务就绪 extern void OSTask_TimeDal(uchar TimeDal); //使一个任务时间延迟 extern void OSISR_Task_Sched(void); //切换任务函数 extern void OSInit_task(); //任务堆栈初始化 |
hmsd 发表于 2023-4-24 17:28 你贴出来,我们替你想办法解决掉啊。 |
人中狼 发表于 2023-4-24 16:43 两个头文件sfr.h os.h找到了,编译时头文件os.h也报错. |
Hephaestus 发表于 2023-4-24 16:59 这个编译器是有的,不过已经过期了不能用了.也没有新版本. |
人中狼 发表于 2023-4-24 16:43 两个头文件在网上找到了,但编译时头文件也抱错.大神给看看头文件有错误吗. os.h头文件 /* Copyright (c) 2001 Crossware Associates */ /* Interrupt vector numbers */ /* Definitions for _interrupt n for Cygnal chips * * For example: * * void _interrupt IVN_TIMER1 Timer1InterruptHandler() * { * } * */ #ifdef __C8051F02X #define IVN_INTERRUPT0 0 #define IVN_TIMER0 1 #define IVN_INTERRUPT1 2 #define IVN_TIMER1 3 #define IVN_SERIALPORT 4 #define IVN_SERIALPORT0 4 #define IVN_TIMER2 5 #define IVN_SPI 6 #define IVN_SMBUS 7 #define IVN_ADC0WINDOW 8 #define IVN_PCA0 9 #define IVN_CP0FALLING 10 #define IVN_CP0RISING 11 #define IVN_CP1FALLING 12 #define IVN_CP1RISING 13 #define IVN_TIMER3 14 #define IVN_ADC0CONVERSION 15 #define IVN_TIMER4 16 #define IVN_ADC1CONVERSION 17 #define IVN_INTERRUPT6 18 #define IVN_INTERRUPT7 19 #define IVN_SERIALPORT1 20 #define IVN_OSC 21 #elif defined(__C8051F0XX) #define IVN_INTERRUPT0 0 #define IVN_TIMER0 1 #define IVN_INTERRUPT1 2 #define IVN_TIMER1 3 #define IVN_SERIALPORT 4 #define IVN_SERIALPORT0 4 #define IVN_TIMER2 5 #define IVN_SPI 6 #define IVN_SMBUS 7 #define IVN_ADC0WINDOW 8 #define IVN_PCA0 9 #define IVN_CP0FALLING 10 #define IVN_CP0RISING 11 #define IVN_CP1FALLING 12 #define IVN_CP1RISING 13 #define IVN_TIMER3 14 #define IVN_ADC0CONVERSION 15 #define IVN_INTERRUPT4 16 #define IVN_INTERRUPT5 17 #define IVN_INTERRUPT6 18 #define IVN_INTERRUPT7 19 #define IVN_OSC 21 #elif defined(__C8051F2XX) #define IVN_INTERRUPT0 0 #define IVN_TIMER0 1 #define IVN_INTERRUPT1 2 #define IVN_TIMER1 3 #define IVN_SERIALPORT 4 #define IVN_SERIALPORT0 4 #define IVN_TIMER2 5 #define IVN_SPI 6 #define IVN_ADC0WINDOW 8 #define IVN_CP0FALLING 10 #define IVN_CP0RISING 11 #define IVN_CP1FALLING 12 #define IVN_CP1RISING 13 #define IVN_ADC0CONVERSION 15 #define IVN_INTERRUPT4 16 #define IVN_INTERRUPT5 17 #define IVN_INTERRUPT6 18 #define IVN_INTERRUPT7 19 #define IVN_OSC 21 #elif defined(__C8051F31X) #define IVN_INTERRUPT0 0 #define IVN_TIMER0 1 #define IVN_INTERRUPT1 2 #define IVN_TIMER1 3 #define IVN_SERIALPORT 4 #define IVN_SERIALPORT0 4 #define IVN_TIMER2 5 #define IVN_SPI 6 #define IVN_SMBUS 7 #define IVN_ADC0WINDOW 9 #define IVN_ADC0CONVERSION 10 #define IVN_PCA0 11 #define IVN_CP0 12 #define IVN_CP1 13 #define IVN_TIMER3 14 #elif defined(__C8051F32X) #define IVN_INTERRUPT0 0 #define IVN_TIMER0 1 #define IVN_INTERRUPT1 2 #define IVN_TIMER1 3 #define IVN_SERIALPORT 4 #define IVN_SERIALPORT0 4 #define IVN_TIMER2 5 #define IVN_SPI 6 #define IVN_SMBUS 7 #define IVN_USB 8 #define IVN_ADC0WINDOW 9 #define IVN_ADC0CONVERSION 10 #define IVN_PCA0 11 #define IVN_CP0 12 #define IVN_CP1 13 #define IVN_TIMER3 14 #define IVN_VBUS_LEVEL 15 #elif defined(__C8051F3XX) #define IVN_INTERRUPT0 0 #define IVN_TIMER0 1 #define IVN_INTERRUPT1 2 #define IVN_TIMER1 3 #define IVN_SERIALPORT 4 #define IVN_SERIALPORT0 4 #define IVN_TIMER2 5 #define IVN_SMBUS 6 #define IVN_ADC0WINDOW 7 #define IVN_ADC0CONVERSION 8 #define IVN_PCA0 9 #define IVN_CP0FALLING 10 #define IVN_CP0RISING 11 #else #error No appropriate variant defined #endif ------------------------------------- sfr.h头文件 系统头文件(sfr.h) REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef __REG51_H__ #define __REG51_H__ typedef unsigned char uint8; typedef unsigned short int uint16; typedef unsigned int uint32; /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; /* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; /* TCON */ sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; /* IE */ sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; /* IP */ sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; /* SCON */ sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif |
hmsd 发表于 2023-4-24 16:01 那你就去找这个编译器呗,用Keil只有死路一条。 |
还是先解决找不到头文件的问题吧 |
Hephaestus 发表于 2023-4-24 15:48 源资料说使用Crossware 8051 C 编译器 |
赶脚不是Keil C51,更像是SDCC或IAR8051,问提供文件的人,到底用什么编译器。 |
xuyaqi 发表于 2023-4-24 15:29 谢谢大神, 刚试过了,还是一样报错. |
应该把 _sfrbit 改为 sbit |