附录A 系统主程序清单及其注释
void main() {
TMOD=0x20; //设置定时器1为工作方式2 TH1=0xfd; //装载初值(波特率9600) TL1=0xfd;
TR1=1; REN=1; SM0=0; SM1=1;
IP=0x01; ES=1; EA=1; init(); suole=1; num1=P0; suole=0; lcd_4();
write_com(0x40); hanzi(0); delay(200); hanzi(1); delay(200); hanzi(2); delay(200); hanzi(3);
write_com(0x80+10);
for(i=0;i<6;i++)
//开启定时器 //允许串行口接收数据
//设置方式1(10为异步收发器,8位数据) //设置中断优先级 //开串行中断 //开总中断 //液晶初始化 //取P0口数据 //写汉字的区域地址
//把汉字编码写入液晶数据存储区 //地址指针往后移动八位,显示存储区内汉字 第 45 页 共 58 页
{
write_data(i); delay(200); } while(1) { lcd_1();
if(key_1==0) //键盘去抖动 {
delay(10); if(key_1==0) {
while(!key_1) //等待按下开启测试键 {
EX0=1; //开外部中断0
Testing:suole=1; //取P0口数据
num1=P0; suole=0;
switch(num1) //判断P0口数据,完成靶环的显示、蜂鸣器的提示等功能 { case 0x22:
{counter+=10;j++;lcd_3();write_com(0x80+0x40+9);write_data('1');write_data('0');writ
e_data(6);write_data(7);while(num1==P0&&!key_1){suole=1;beep(100);suole=0;};};break; case 0x24:
{counter+=10;j++;lcd_3();write_com(0x80+0x40+9);write_data('1');write_data('0');writ
e_data(6);write_data(7);while(num1==P0&&!key_1){suole=1;beep(100);suole=0;};};break; case 0x42:
第 46 页 共 58 页
{counter+=10;j++;lcd_3();write_com(0x80+0x40+9);write_data('1');write_data('0');writ
e_data(6);write_data(7);while(num1==P0&&!key_1){suole=1;beep(100);suole=0;};};break; case 0x44:
{counter+=10;j++;lcd_3();write_com(0x80+0x40+9);write_data('1');write_data('0');writ
e_data(6);write_data(7);while(num1==P0&&!key_1){suole=1;beep(100);suole=0;};};break; case 0x12:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');wri
te_data(6);write_data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x14:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x21:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x28:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x41:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x48:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x82:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break;
第 47 页 共 58 页
case 0x84:
{counter+=9;j++;lcd_3();write_com(0x80+0x40+9);write_data('9');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(200);suole=0;};};break; case 0x11:
{counter+=8;j++;lcd_3();write_com(0x80+0x40+9);write_data('8');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(300);suole=0;};};break; case 0x18:
{counter+=8;j++;lcd_3();write_com(0x80+0x40+9);write_data('8');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(300);suole=0;};};break; case 0x81:
{counter+=8;j++;lcd_3();write_com(0x80+0x40+9);write_data('8');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(300);suole=0;};};break; case 0x88:
{counter+=8;j++;lcd_3();write_com(0x80+0x40+9);write_data('8');write_data(6);write_
data(7);while(num1==P0&&!key_1){suole=1;beep(300);suole=0;};};break; default:lcd_2();break; }
} }
第 48 页 共 58 页
}
}
send(); //向上位机发送数据 }
if(num1!=P0) //判断数据是否变化 { }
goto Testing; //跳转
相关推荐: