早教吧 育儿知识 作业答案 考试题库 百科 知识分享

英语翻译#include#includeunsignedchardatadisdigit;unsignedcharkeys,keyv;unsignedcharcodediscode[11]={0xc0,0xf9,0xa4,0xb0,\x05//0,1,2,30x99,0x92,0x82,0xf8,0x80,0x90,0xff};//4,5,6,7,8,9,offunsignedchardisbuf[8];\x05\x05//显示

题目详情
英语翻译
#include
#include
unsigned char data dis_digit;
unsigned char key_s,key_v;
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,\x05// 0,1,2,3
0x99,0x92,0x82,0xf8,0x80,0x90,0xff};// 4,5,6,7,8,9,off
unsigned char dis_buf[8];\x05\x05// 显示缓冲区
unsigned char sec_bcd[8]; \x05\x05// 秒计数值,BCD码
unsigned char dis_index;\x05\x05//
unsigned char key_times;\x05\x05// K1 按下次数\x05\x05\x05\x05//
void clr_time();\x05
void update_disbuf();
bit\x05scan_key();
void proc_key();
void delayms(unsigned char ms);
sbit\x05K1 = P3^2;
void main(void)
{
\x05P0 = 0xff;
\x05P2 = 0xff;
\x05TMOD = 0x11;\x05\x05// 定时器0,1工作模式1,16位定时方式
\x05TH1 = 0xdc;
TL1 = 0;
TH0 = 0xFC;
TL0 = 0x17;
clr_time();\x05\x05\x05//
\x05\x05\x05
dis_digit = 0x7f;\x05\x05// 初始显示P20口数码管
\x05dis_index = 0;\x05\x05\x05//
\x05
\x05key_times = 0;
\x05key_v = 0x01;
\x05
\x05IE = 0x8a;\x05\x05\x05\x05// 使能timer0,timer1中断
\x05
\x05TR0 = 1;
\x05TR1 = 0;
\x05while(1)
\x05{
\x05\x05if(scan_key())
\x05\x05{
\x05\x05\x05delayms(10);
\x05\x05\x05if(scan_key())
\x05\x05\x05{
\x05\x05\x05\x05key_v = key_s;
\x05\x05\x05\x05proc_key();
\x05\x05\x05}
\x05\x05}
\x05\x05
\x05}
}
void clr_time()
{
\x05sec_bcd[0] = 0x0;
\x05sec_bcd[1] = 0x0;
\x05sec_bcd[2] = 0x0;
\x05sec_bcd[3] = 0x0;
\x05sec_bcd[4] = 0x0;
\x05sec_bcd[5] = 0x0;
\x05sec_bcd[6] = 0x0;
\x05sec_bcd[7] = 0x0;
\x05
\x05update_disbuf();
\x05
}
bit scan_key()
{
\x05key_s = 0x00;
\x05key_s |= K1;
\x05return(key_s ^ key_v);\x05
}
void proc_key()
{
\x05if((key_v & 0x01) == 0)
\x05{
\x05\x05key_times++;
\x05\x05if(key_times == 1)
\x05\x05{
\x05\x05\x05TR1 = 1;
\x05\x05}
\x05\x05else if(key_times == 2)
\x05\x05{\x05
\x05\x05\x05TR1 = 0;
\x05\x05}
\x05\x05else
\x05\x05{
\x05\x05\x05clr_time();
\x05\x05\x05key_times = 0;
\x05\x05}
\x05\x05
\x05}
}
void timer0() interrupt 1
// 定时器0中断服务程序,用于数码管的动态扫描
// dis_index --- 显示索引,用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,
//\x05\x05\x05\x05选通P2.0口数码管
// dis_buf --- 显于缓冲区基地址\x05
{
\x05TH0 = 0xFC;
\x05TL0 = 0x17;
\x05
\x05P2 = 0xff;\x05\x05\x05\x05\x05\x05\x05// 先关闭所有数码管
\x05P0 = dis_buf[dis_index];\x05\x05\x05// 显示代码传送到P0口
\x05P2 = dis_digit;\x05\x05\x05\x05\x05\x05//
\x05dis_digit = _cror_(dis_digit,1);\x05// 位选通值右移(P30
▼优质解答
答案和解析
# include < intrins.H >
Unsigned char is dis_digit;
Key_s unsigned char,key_v;
Unsigned char code dis_code [11] = {0,0,0 xc0 xf9 xa4,0 xb0,/ / 0,1,2,3
0,0,0 x99 x92 x82,0,0,0 xf8 x80,0 XFF} x90; / / 4,5,6,7,8,9,off
Unsigned char dis_buf [8]; / / show buffer
Unsigned char sec_bcd [8]; / / seconds count value,BCD
Unsigned char dis_index; / /
Unsigned char key_times; / / K1 press the number / /
Use void clr_time ();
Use void update_disbuf ();
Scan_key (bit);
Use void proc_key ();
Use void delayms (unsigned char ms);
Sbit K1 =