找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3074|回复: 9
收起左侧

谁能帮我把这个单片机程序编程为hex文件?可以直接烧录的,我编译出问题

[复制链接]
ID:410148 发表于 2018-11-23 14:14 | 显示全部楼层 |阅读模式
哪位大佬,能不能帮忙把这个文件变成hex文件可以直接烧录的
  1. #include "src\STC12C5A.h"                 

  2. #include <intrins.h>      
  3. #include <math.h>

  4. #include "src\Define.h"

  5. uchar data DelayTime=9;                  
  6. uchar data gain=6,tt=0;

  7. uchar idata refreshflag[40];
  8. uchar  data LEDBuf[35];         
  9. #include "src\ADC.c"
  10. #include "src\fft.h"

  11. uchar code ax[]={0,0,0,0,0,0,0,0,                                 
  12.                                  0,0,0,0,0,0,0,0,                        
  13. 0x00,0x00,0x00,0x70,0xF8,0xFC,0xFE,0x7F,0x7F,0x7F,0xFE,0xFC,0xF8,0x70,0x00,0x00,
  14.                                  0,0,0,0,0,0,0,0,
  15.                              0,0,0,0,0,0,0,0,
  16.                                 };

  17. void Delays(uint t)                  {  
  18.         uint j;
  19.         while(--t)
  20.         {
  21.                 for(j=0;j<5;j++);
  22.         }   
  23. }

  24. void IOINIT()                 
  25. {        
  26.         P0M1 = 0x00;            P0M0 = 0xff;       P0=0; //点阵列(Y)(L:OFF; H,H+:ON,ON+;)
  27.         P1M1 = B(01000011); P1M0 = B(00110000);P1=B(10111111); //(P17@(高阻,IN)&P16@(高阻,IN) ... P11@(高阻,IN)AD2;P10@(高阻,IN)AD1;      
  28.         P2M1 = B(00000000); P2M0 = B(11111111);P2=0; //点阵行(X0(Left))(L:OFF; H,H+:ON,ON+;)  
  29.         P3M1 = B(00000000);        P3M0 = B(11111111);P3=0; //点阵行(X1(Right))(L:OFF; H,H+:ON,ON+;)               
  30.         P1ASF =B(00000011);                          //将P10,P11的IO设置为模拟输入功能;     
  31. }

  32. void BufToLED_Refresh()                //把LEDBuf的数值数据传到P0,通过LED显示出来
  33. {        
  34.          uchar data i;                                 
  35.          uint temp=0x7fff;         
  36.          for(i=0;i<32;i+=2)         
  37.          {
  38.                  P0=0x00;                  
  39.                 P2=temp/256;         
  40.                 P3=temp%256;         
  41.                 P0=~LEDBuf[i];        
  42.                 Delays(DelayTime);        
  43.                 P2=0xff;                 
  44.                 P3=0xff;                  
  45.                 temp>>=1;               
  46.                 temp|=0x8000;        
  47.          }
  48. }

  49. void LOVE()         
  50. {        
  51.          uchar data i;                  
  52.          uint temp=0x7fff;         

  53.          for(i=0;i<16;i++)         
  54.          {
  55.                  P0=0x00;               
  56.                 P2=temp/256;           
  57.                 P3=temp%256;        
  58.                 P0=ax[i+tt];         
  59.                 Delays(DelayTime);         
  60.                 P2=0xff;                    
  61.                 P3=0xff;                 
  62.                 temp>>=1;                    
  63.                 temp|=0x8000;         
  64.          }
  65. }

  66. void Timer_INT()         
  67. {
  68.          TMOD = 0x10;  
  69.         EA = 1;            
  70.         TH1 = 0x00;   
  71.         TL1 = 0x00;   
  72.         ET1 = 1;      
  73.     TR1 = 1;      
  74. }

  75. void ax_xs()                  
  76. {
  77.         uint pp=4000;        
  78.         while(pp--)               
  79. while循环)
  80.         {
  81.                 if(pp%250==0)        
  82.                 {
  83.                         tt++;               
  84.                 }
  85.                 LOVE();                        
  86.         }
  87.         pp=4000;                                                        
  88.         while(pp--)               
  89. while循环)
  90.         {
  91.                 LOVE();                 
  92.         }
  93.         pp=4000;                  
  94.         while(pp--)               
  95. while循环)
  96.         {
  97.                 if(pp%250==0)        )
  98.                 {
  99.                         tt++;               
  100.                 }
  101.                 LOVE();                        
  102.         }
  103. }

  104. void Main()                        
  105. {  
  106.         uint data Count=700;                  
  107.         uchar data i,Cgain,num=0;        

  108.         IOINIT();                        
  109.         ax_xs();                           
  110.         InitADC();                           
  111.         Timer_INT();                  

  112.         while(1)                //主循环
  113.         {
  114.                 for(i=0;i<65;i++)                 )
  115.                 {  
  116.                         dd[i].real=(GetADCResult(0)+GetADCResult(1))<<gain;         
  117.                 }
  118.                  processfft();                        
  119.                 if(dd[2].real<32)                  
  120.                 {
  121.                         if(++Count==300)        
  122.                         {
  123.                                 Count=0;                //Count清0               
  124.                                 gain=6;                        //gain=6               
  125.                         }
  126.                 }
  127.                 else                                 
  128.                 {
  129.                         Count=1;                        
  130.                         if(++num==0xAF)               
  131.                         {
  132.                                 num=0;                                 
  133. /*自动增益的作用: 当输入的音频信号的音量变大或变小时,采样的 AD 值幅度也会有相应趋势的变化,
  134. 于是根据这个值自动调节 AD 值放大的倍数,维持在一定的范围内,从而使显示的效果最好,
  135. 不会出现满屏或者空屏的现象*/
  136.                                 //自动增益;Automatic gain;
  137.                                 Cgain=dd[2].real/32;                                       
  138.                                 if(7<Cgain<=8)                 
  139.                                 {
  140.                                         gain=4;                        //4
  141.                                 }
  142.                                 else if(4<Cgain<=6)
  143.                                 {
  144.                                         gain=5;                        //5
  145.                                 }
  146.                                 else if(2<Cgain<=4)
  147.                                 {
  148.                                         gain=6;                        //6
  149.                                 }
  150.                                 else
  151.                                 {
  152.                                         gain=7;                          //7
  153.                                 }
  154.                         }
  155.                 }                 
  156.         }
  157. }

  158. void LEDRefresh_INT() interrupt 3    //定时器中断服务函数
  159. {
  160.     TH1 = 0x8A;   
  161.     TL1 = 0xD0;   
  162.                                        
  163.         BufToLED_Refresh();         
  164.                                        
  165. }
复制代码


程序.doc

32 KB, 下载次数: 5

回复

使用道具 举报

ID:303383 发表于 2018-11-23 16:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:410148 发表于 2018-11-23 20:52 | 显示全部楼层
小猫猫爱吃鱼 发表于 2018-11-23 16:01
你好!从程序里面看,至少缺少 3 个自定义的头文件


Color Image Link Quote Code Smilies

大佬,能否帮我弄成hex文件,我keil4缺少头文件
回复

使用道具 举报

ID:410148 发表于 2018-11-23 21:02 | 显示全部楼层
小猫猫爱吃鱼 发表于 2018-11-23 16:01
你好!从程序里面看,至少缺少 3 个自定义的头文件

怎么添加头文件?
回复

使用道具 举报

ID:155507 发表于 2018-11-23 21:15 | 显示全部楼层
缺少 3 个自定义的头文件 在这

http://www.51hei.com/bbs/dpj-57230-1.html

回复

使用道具 举报

ID:111517 发表于 2018-11-23 21:16 | 显示全部楼层
你的头文件是你自己定义的,你自己定义的什么我们也不清楚
回复

使用道具 举报

ID:155507 发表于 2018-11-23 21:47 | 显示全部楼层
这个hex文件可以直接烧录的

Prj.zip

5.31 KB, 下载次数: 5

回复

使用道具 举报

ID:432106 发表于 2018-11-23 22:19 | 显示全部楼层
keil2和4我都有用,一般头文件系统有定义好啊。生成hex文件?有没有在建工程的时候点选Creat Hex File呢?
回复

使用道具 举报

ID:432118 发表于 2018-11-23 22:56 | 显示全部楼层
点击输出,生成hex文件
回复

使用道具 举报

ID:358930 发表于 2018-11-24 07:07 | 显示全部楼层
帮你试了,下载楼上那个地址的程序资料,KEIL5能通过,如还不行你要选学会2样事以后就不会有相同情况了,学会添加头文件,升级最新的KEIL5。我也是快升级的KEIL5发现用51没问题,用STM32无法生成HEX后来发现是安装时没有连网,没有下载MCU型号支持,搞的好好一会儿。重装和破解N遍,气的要用回KEIL4.本来就看中KEIL5能同时用51和RAM。没想到编译全过就是不生存HEX.一点经历分享下哈哈哈哈
20181124_065515.jpg

评分

参与人数 1黑币 +15 收起 理由
凌净清河 + 15 学习了!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表