共2条
1/1 1 跳转至页
急!急!一个关于汇编嵌入C的问题

问
我是用KEIL写的,程序如下:
#include "reg51.h"
#define uchar unsigned char
#ifdef asm
extern void sendcommand(uchar);
#endif
void sendcommand(uchar x)
{
#pragma asm
DATAB EQU P1.4
WRPIN EQU P1.5
CSPIN EQU P1.6
LCDCM: CLR CSPIN ;选中LCD
MOV A, #80H
MOV R6, #03H
LCM1: RLC A ;send 100
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
SETB WRPIN
DJNZ R6, LCM1
MOV R6, #08H
MOV A, R6
LCM2: RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
DJNZ R6, LCM2
NOP
NOP
NOP
NOP
CLR DATAB
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
NOP
SETB CSPIN
NOP
NOP
NOP
NOP
SETB DATAB
#pragma endasm
}
main()
{
unsigned char i=0x01;
void sendcommand(i);
}
编译之后系统提示:error c161:'i' formal parameter ignored
实参哪里又问题啊??
请问各位大虾怎么回事,还有谁有这方面的资料?谢谢~~~ 答 1: 哥们,你的定义有问题在c51中不支持
void sendcommand(uchar x)这样的定义
你需要改为:
void sendcommand(x)
uchar x;
C51并不是标准的ANSI C,而是混合了c++和一些自己扩展的关于硬件的东西。
#include "reg51.h"
#define uchar unsigned char
#ifdef asm
extern void sendcommand(uchar);
#endif
void sendcommand(uchar x)
{
#pragma asm
DATAB EQU P1.4
WRPIN EQU P1.5
CSPIN EQU P1.6
LCDCM: CLR CSPIN ;选中LCD
MOV A, #80H
MOV R6, #03H
LCM1: RLC A ;send 100
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
SETB WRPIN
DJNZ R6, LCM1
MOV R6, #08H
MOV A, R6
LCM2: RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
DJNZ R6, LCM2
NOP
NOP
NOP
NOP
CLR DATAB
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
NOP
SETB CSPIN
NOP
NOP
NOP
NOP
SETB DATAB
#pragma endasm
}
main()
{
unsigned char i=0x01;
void sendcommand(i);
}
编译之后系统提示:error c161:'i' formal parameter ignored
实参哪里又问题啊??
请问各位大虾怎么回事,还有谁有这方面的资料?谢谢~~~ 答 1: 哥们,你的定义有问题在c51中不支持
void sendcommand(uchar x)这样的定义
你需要改为:
void sendcommand(x)
uchar x;
C51并不是标准的ANSI C,而是混合了c++和一些自己扩展的关于硬件的东西。
共2条
1/1 1 跳转至页