Patent ID: 7145809

Claim:
A method for programming a multi-level cell, comprising: providing a memory cell, the memory cell comprising a first storage position and a second storage position, wherein each of the first storage position and the second storage position stores n bits, and 2 n states with different threshold voltages, and the threshold voltages of the states are gradually reduced from the first state to the 2 n th state; erasing the memory cell to raise and make threshold voltages of the first and second storage positions larger than the threshold voltages of the states; and performing a judging step, comparing a first programming state and a second programming state, which are going to be programmed for the first storage position and the second storage position, respectively, when the first programming state is as same as the second programming state, a two-side programming step being performed to the memory cell; when one of the first programming state and the second programming state is the first state, and another is a state except the first state, a one-side programming step being performed to the memory cell; and when the first programming state and the second programming state are not the first state, and the threshold voltages corresponding to the first programming state and the second programming state are different, a switched two-side programming step being performed to the memory cell.