看看main()函數就知道了。首先定義K和I,然後定義中斷類型(程序中使用定時器中斷)。這個定時器有點特別。它的功能是定義頻率。頻率間隔小,音調就高,反之亦然。這個頻率是時間的倒數,所以th值越大,音調越高;TL值越小,音調越低。然後往下走,而(1)表示等待中斷。這個程序中的定時器中斷沒有初始值,所以幾乎沒有等待中斷的情況,壹直觸發(如果有等待時間,音樂就不會連接)。總結壹下:這個定時器中斷完成兩個任務:1,使單片機定時觸發(等待時間幾乎為零);2.控制音符的播放頻率。
loop down while(time)是給彈奏的音符賦值的操作。
其余的子功能都做了註釋,所以我不會詳細介紹它們的功能。