微控制器8 8點陣顯示漢字的程式

2021-03-17 17:36:28 字數 818 閱讀 9723

1樓:易爾通網路科技

1. *** 0hstart:mov dptr,#data1 ;指向點陣**首址;

clr cdisp?這個應該是clr c(清除標誌位,因為下面要判斷是否移完8位)吧

2. mov r2,#80h ; 80h 使第7 列(最左一列)陰極為低電平(這個感覺也有問題)

3.disp:mov a,#0; 賦初值0,為了下面能從點陣**表中從零開始取**

movc a,@a+dptr ; 取第一列點陣**

mov p2,a ; 將第一列點陣**的值賦給p2口

mov p1,r2 ;使一列陰極為低電平?

call delay ; 呼叫延時

inc dptr ; 指向下一列點陣**

mov a,r2 ; r2的值賦給a

rrc a ; 右移一位,為下一列陰極輸出低電平作準備

mov r2,a ;右移一位後再把值儲存到r2,為了下一次右移

jnc disp ; 8 列未完跳回到disp繼續執行

4.ajmp start 跳轉到start

delay: mov r1,#0 ;//這個有問題,r1不是賦零,不然怎麼延時啊

dely0: djnz r1,dely0 ;延時(直到r1的值變為0)

5.ret 返回(這個子程式執行完了)

6.data1: db 24h,44h,dch,54h,7fh,54h,54h,44h; 點陣**表

2樓:匿名使用者

漢字至少16x16點陣。8x8點陣只能顯示極少數筆劃簡單的漢字,其它的就是糊成一片的。

微控制器延遲程式詳解,微控制器延時程式的延時時間怎麼算的?

如果是51,晶振是12m,你的程式可延遲4ms左右。如果一定要用它延遲40ms,那就把晶振換成1m左右的吧!晶振12m時,一條djnz花的時間是2us,mov r5,108h 花的時間是1us ret 花的時間是2us 你算一下它們執行了幾次,把他們花掉的時間加起來,就是延遲時間了。你可以參巧延遲算...

微控制器 按鍵產生中斷 控制顯示 程式

中斷保護現場,是為了你中斷子程式執行完以後能夠返回到你程式中中斷點,即產生中斷的地方,使程式能夠繼續向下執行!如過你說的不用保護現場的話,那麼程式執行完以後就不能夠回到現場,那麼你的程式將不知道要跳轉到那裡去了,也就是飛鳥,呵呵 你說的中斷巢狀,也是一樣的,兩者都要保護現場,不然你也不能夠回到現場,...

微控制器中斷程式怎麼讀啊,什麼是微控制器的中斷

讀懂中斷服務程式很容易的。首先你要搞懂這是什麼中斷,從中斷服務程式第一行可以看出來。void int time void interrupt 1這是中斷名,可以隨便取 這是中斷號,從0 開始往上排,1表示定時器0中斷。分別是 0 外部中斷0 1 定時器0中斷。2 外部中斷1 3 定時器1 4 串列埠中...