关于POS机的客显问题
各位好,我刚接触POS机,不怎么懂,现在要写个POS机的客显,我写了但就是没显示结果,不知道为什么,他的协议是,我发送0,他串口输出+s1 +QA1.00 发送1他显示+s1QA2.00 总计他输出+s2+QA3.00 收款他输出+s3+QA3.00 我的程序传上来了,现在急着用,谢谢了。
#include "reg52.h"
#include "intrins.h" //内部包含延时函数 _nop_();
typedef unsigned char int8u;
typedef unsigned int int16u;
int8u temp;
sbit sdata=P3^1;
sbit srck=P1^2;
sbit rck=P1^3;
sbit led_1=P3^2;
sbit led_2=P3^3;
sbit led_3=P3^4;
sbit led_4=P3^5;
void initiate (void) //串口初始化
{
ES=0;
EA=0; //禁止串口中断
SCON=0x50; //串口工作于方式1
TMOD=0x20; //T1工作于方式2
TH1=0xf4; //f=11.0592 波特率为2400
TL1=0xf4;
TR1=1; //允许T1计数
ES=1;
EA=1;
}
void accept_byte (int8u one_byte)//接受一个字节的数据
{
RI=0;
one_byte=SBUF;
while(RI==0);
RI=0;
}
void wr_595(void) //将显示数据送入74HC595内部移位寄存器
{
int8u j;
for (j=0;j <8;j++)
{
temp=temp < <1;
sdata=CY;
srck=0; //上升沿触发
_nop_();
_nop_();
srck=1;
_nop_();
_nop_();
_nop_();
}
}
void out_595(void) //将移位寄存器内的数据锁存到输出寄存器并显示
{
rck=0;
_nop_();
_nop_();
rck=1;
_nop_();
_nop_();
_nop_();
}
void delay(int ms) //延时函数
{
int k;
while(ms--)
{
for(k=0; k <250; k++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void main ()
{
initiate();
while(1)
{
loop: accept_byte(temp);
accept_byte(temp);
accept_byte(temp);
switch(temp)
{
case 0x01:
led_4=0;
break;
case 0x02:
led_1=0;
break;
case 0x03:
led_3=0;
break;
case 0x04:
led_2=0;
break;
}
delay(0x100);
accept_byte(temp);
accept_byte(temp);
accept_byte(temp);
accept_byte(temp);
accept_byte(temp);
loop1: wr_595();
out_595();
delay(100);
accept_byte(temp);
if(0x0d==temp)
{
goto loop;
}
else
accept_byte(temp);
goto loop1;
}
}
发表时间:2007年4月27日16:39:52