数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1230|回复: 5

[C51] 直线插补的程序,为什么显示两个错误呀

[复制链接]
发表于 2020-5-13 02:05:12 来自手机浏览器 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
#include <reg51.h>
#include <intrins.h>
#include "LCD1602.h"
#define ucher unsigned char
#define uint unsigned int
uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code FFW[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
sbit K1 = P3^2;
int Xe=-8;
int Ye=6;
int Ym=0;
int Xm=0;
unit XOY;
uint ZF;
int r;
int N=64;
int M=5;
int MM=0;
int cstep;
int abs(int x);
void delay(uint t)
void XZstep();
void YZstep();
void XFstep();
void YFstep();
int pdxoy(int x,int y);
void InitLCD()
{
  LCDReset();
  InputMode(0x06);
  DispControl(0x0c);
  FunctionSet(0x38);
}
main()
{   
int Fm=0;
cstep=abs(Xe)+abs(Ye);
InitLCD();
XOY=pdxoy(Xe,Ye);  
while(1)
{
DispCharacter(0,1,'D');
DispCharacter(0,2,'I');  
DispCharacter(0,3,'R');   
DispCharacter(0,4,':');
if(K1==0)   
{      
while(cstep!=0)
{            
if(Fm>=0)  
{                    
if((XOY==1) || (XOY==4))  
{         
ZF=1;              
}        
else        
{         
ZF=2;         
}         
Fm=Fm-abs(Ye);
}      
else      
{                  
if((XOY==1) || (XOY==2))           
{            
ZF=3;        
}           
else           
{            
ZF=4;         
}            
Fm=Fm+abs(Xe);               
}   
switch(ZF)
{      
case 1: {                 
YZstep();   
if(M==16 || M==17)         
{           
DispCharacter(1,MM++,'X');         
}         
else
{      
DispCharacter(0,M++,'X');      
}      
}break;
case 2: {      
YFstep();         
if(M>=16)         
{           
DispCharacter(1,MM++,'-');           
DispCharacter(1,MM++,'X');         
}         
else         
{                 
DispCharacter(0,M++,'-');         
DispCharacter(0,M++,'X');        
}
}break;   
case 3: {   
XZstep();            
if(M==16 || M==17)      
{            
DispCharacter(1,MM++,'Y');      
}      
else      
{         
DispCharacter(0,M++,'Y');      
}  
}break;   
case 4: {   
XFstep();      
if(M==16 || M==17)      
{           
DispCharacter(1,MM++,'-');               
DispCharacter(1,MM++,'Y');
}      
else      
{            
DispCharacter(0,M++,'-');            
DispCharacter(0,M++,'Y');      
}  
}break;      
}   
delay(200);      
cstep--;
发表于 2020-5-13 10:18:22 | 显示全部楼层
错误提示弄上来看看啊,贴这个谁帮你
回复 支持 反对

使用道具 举报

发表于 2020-5-13 10:18:59 | 显示全部楼层
#include "LCD1602.h"
这个你有吗?
工程结构截图来
回复 支持 反对

使用道具 举报

发表于 2020-5-13 23:08:23 来自手机浏览器 | 显示全部楼层
unit XOY;这句手误了吧
回复 支持 反对

使用道具 举报

发表于 2020-5-14 10:56:43 | 显示全部楼层
本帖最后由 zhuls 于 2020-5-14 10:59 编辑

#define ucher unsigned char
#define uint unsigned int
uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code FFW[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
ucher与uchar,还有2个相同名字的FFW【8】
回复 支持 反对

使用道具 举报

发表于 2020-5-14 13:06:40 | 显示全部楼层
你这纯粹就是不会C语言的问题:titter:
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-19 05:08 , Processed in 0.187201 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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