nTX0_Len=send_len; nTX0_Len_temp=0;
for(i = 0;i < nTX0_Len;i++)
UART0_TX_BUF[i] = UART_sendstring[i]; IFG2 |=UTXIFG1; }
Key.c 程序清单 void key_up(void) {
if(number==0) //当前记录是首记录 {
uint i; for(i=0;i<3;i++) { disp_ascii(0,0,error); delayms(20); cls_ascii(0,0,3); //清除错误标志 delayms(10); } disp_ascii(0,0,error); } else { if(number%7==0) //当前记录是当前页的首记录 { line=1; loop_control=0; cls_chn(0,1,105);
for(line=1,number-=7;loop_control<7;loop_control++,number++,line++) //翻页 disp_record(line,record[number].Num,record[number].Name,record[number].Price);
line=7; number-=1; OVERTURN; //反色显示最下面一条记录 disp_record(line,record[number].Num,record[number].Name,record[number].Price);
OVERTURN; } else //其他情况 { cls_chn(2,line,13); disp_record(line,record[number].Num,record[number].Name,record[number].Price);
line-=1; OVERTURN;
number-=1; disp_record(line,record[number].Num,record[number].Name,record[number].Price);
OVERTURN; } } }
void key_down(void) { number+=1; if(number%7==0) //当前记录是当前页的最后一条记录 {
line=1;
loop_control=0; cls_chn(0,1,105); for(line=1;loop_control<7;loop_control++,number++,line++) /翻页 disp_record(line,record[number].Num,record[number].Name,record[number].Price);
line=1; number-=7;
OVERTURN; //反色显示最上面一条记录 disp_record(line,record[number].Num,record[number].Name,record[number].Price);
OVERTURN; }
else //其他情况 {
cls_ascii(0,0,3); //清除错误标志 cls_chn(2,line,13); //清除上一条记录 disp_record(line,record[number-1].Num,record[number-1].Name,record[number-1].Price);
line+=1;
OVERTURN; disp_record(line,record[number].Num,record[number].Name,record[number].Price);
OVERTURN; } }
void key_sel(void) { uint i; uchar flag=1;
for(i=0;i<32;i++)
if(number+1==BUFFER[i]) flag=0; if(flag==1) {
BUFFER[BUFFER_j]=number+1;
BUFFER_j++;
disp_img(0,line*16,24,16,sel); r_counter+=1;
cls_ascii(0,1,3); //清除计数器显示 if(r_counter>9) { disp_char(0,8,r_counter/10+48); disp_char(1,8,r_counter+48); } else disp_char(0,8,r_counter+48); } }
void key_cancel(void) {
for(BUFFER_i=0;BUFFER_i<32;BUFFER_i++) {
if(number+1==BUFFER[BUFFER_i]) { BUFFER[BUFFER_i]=0; cls_chn(0,line,2); r_counter-=1; cls_ascii(0,1,3); if(r_counter>9) { disp_char(0,8,r_counter/10+48); disp_char(1,8,r_counter+48); } else disp_char(0,8,r_counter+48); } }
void key_send(void) { uint m; uint n=0; uint line=1; uint counter=0; CLEAR; delayms(1); disp_chn(4,0,cm); for(m=0;m<32;m++) { if(BUFFER[m]==0); else { if(counter%2==1) line+=1; { if(n%2==0) disp_chn(1,line,record[BUFFER[m]-1].Name);
}
}
else disp_chn(8,line-1,record[BUFFER[m]-1].Name); counter+=1; }
n+=1;
附录二 电路图