这要看您用的是什么单片机了,就是说单片机带不带硬件I2C接口。如果您用的是标准51单片机,比如AT8951系列,或者STC的51系列,那就没有硬件I2C接口,需要自己用IO来模拟I2C协议,所以I2C的ACK位需要您自己写程序来产生;但如果用的是某些带有硬件I2C的单片机,比如C8051F系列的某些增强型51,或者干脆ARM,那么这个ACK是I2C模块硬件自动产生的,不需要用户软件来写。