在KEIL中这个报错是什么问题?

图片说明

报的错误是 MAIN.C(270): error C175: 0x1: duplicate case value

查了下说是重复定义。 可明明case的答案都是不一样的。 求大神解答下

不要在数字前加上0,否则表示这是一个8进制的数字。

#include <key_copy_lesson1.h>

unsigned char read_keyboard(void)
{
unsigned char Key_new;
unsigned char key_val;

P44 = 0; P42 = 1; P35 = 1; P34 = 1;  //第1列
Key_new = P3;            

P44 = 1; P42 = 0;
Key_new = (Key_new<<4) | (P3&0X0F);  //第2列

P42 = 1; P35 = 0;
Key_new = (Key_new<<4) | (P3&0X0F);  //第3列

P35 = 1; P34 = 0;
Key_new = (Key_new<<4) | (P3&0X0F);  //第4列

switch(~Key_new)
{
    case 0x8000: key_val = 4; break; 
    case 0x4000: key_val = 5; break; 
    case 0x2000: key_val = 6; break; 
    case 0x1000: key_val = 7; break;
    
    case 0x0800: key_val = 8; break; 
    case 0x0400: key_val = 9; break; 
    case 0x0200: key_val = 10; break; 
    case 0x0100: key_val = 11; break; 
    
    case 0x0080: key_val = 12; break; 
    case 0x0040: key_val = 13; break; 
    case 0x0020: key_val = 14; break; 
    case 0x0010: key_val = 15; break; 
    
    case 0x0008: key_val = 16; break; 
    case 0x0004: key_val = 17; break; 
    case 0x0002: key_val = 18; break; 
    case 0x0001: key_val = 19; break;
    default: key_val = 0;        
}
return key_val;

}
显示错误:
key_copy_lesson1.c(23): error C175: 0x0: duplicate case value

那我的呢?