找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2412|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+LCD12864 7線屏匯編程序可用 另有疑問(wèn)需要解答

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
源程序C語(yǔ)言  http://www.torrancerestoration.com/bbs/dpj-186645-1.html
匯編程序是反編譯修改后得到的   
圖中圈起來(lái)的部分不明白    R5是如何被寫進(jìn)屏幕的  在寫入的部分沒(méi)找到和R5相關(guān)的程序  還有R4直接修改成04H去掉DEC R4 顯示就不正常 這是什么原因  

下面是和R4 R5相關(guān)的單片機(jī)匯編程序
                                   COM          EQU      31H;  命令
                                   DAT          EQU      32H;  數(shù)據(jù)
                                   DIP_Y        EQU      33H;  頁(yè)   
                                   DIP_L            EQU      34H;  列



                                    MOV   DIP_Y,#01H;     頁(yè)                                                                           MOV   DIP_L,#01H;     列

//顯示32x32點(diǎn)陣圖像
disp_blink_32x32:     MOV   R2,DIP_Y;      頁(yè)
                      MOV   R5,DIP_L;      列                                                        
                      LCALL lcd_address;   設(shè)定頁(yè)列位置
                      MOV   R4,#32;        32像素
                                      MOV   R3,#4;         4頁(yè)                                                        
W1_3232:                   CLR A
                                      MOVC A,@A+DPTR;
                                      INC DPTR
                      MOV   DAT,A                        
                      LCALL transfer_data; 寫入數(shù)據(jù)                                             
                      DJNZ R4,W1_3232  
                                      DJNZ R3,W2_3232
                                      LJMP W3_3232
W2_3232:                      MOV   R5,DIP_L;      列                 
                      INC R2;                       頁(yè)加一
                                      INC R2;              頁(yè)加一  
                      LCALL lcd_address;   設(shè)定頁(yè)列位置  
                                      MOV   R4,#32;        32像素                                          
                      LJMP W1_3232                                                                                 
W3_3232:              RET   
;==========================================================================
// 頁(yè) 列
lcd_address:          MOV   R4,05H                        
                      DEC   R4                           
                      DEC   R2                // 頁(yè)減一         
                      MOV   A,R2                        
                      ADD   A,#0B0H;                     
                      MOV   COM,A                        
                      LCALL transfer_command; //設(shè)置頁(yè)地址。                     
                      MOV   A,R4                        
                      SWAP  A;                //高低位互換         
                      ANL   A,#0FH                       
                      ADD   A,#10H                       
                      MOV   COM,A                        
                      LCALL transfer_command; //設(shè)置列地址的高4位                       
                      MOV   A,R4                          
                      ANL   A,#0FH                       
                      MOV   COM,A                        
                      LCALL transfer_command; //設(shè)置列地址的低4位   
                                      RET;
         
;==========================================================================
/*寫指令到LCD模塊*/
transfer_command:  CLR   CS                          
                   CLR   CD                        
                   MOV   R5,#8                        
Q00B7:             CLR   SCL                        
                   MOV   A,COM                        
                   JNB   ACC.7,Q00C1                  
                   SETB  SDA                          
                   SJMP  Q00C3                        
Q00C1:             CLR   SDA                        
Q00C3:             SETB  SCL                        
                   MOV   A,COM                        
                   ADD   A,ACC                        
                   MOV   COM,A                        
                   DJNZ R5,Q00B7               
                   SETB  CS                          
                   RET      

無(wú)字庫(kù)12864 - 匯編.rar

33.67 KB, 下載次數(shù): 4

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:126422 發(fā)表于 2022-10-23 22:17 | 只看該作者
請(qǐng)教樓主,C用什么軟件反編譯成匯編,看你改的挺好,想學(xué)習(xí),謝謝!
回復(fù)

使用道具 舉報(bào)

板凳
ID:884147 發(fā)表于 2022-10-23 22:51 | 只看該作者
05H就是R5,但R5不一定是05H
回復(fù)

使用道具 舉報(bào)

地板
ID:884147 發(fā)表于 2022-10-23 22:52 | 只看該作者
05H就是R5,是一個(gè)寄存器
回復(fù)

使用道具 舉報(bào)

5#
ID:384109 發(fā)表于 2022-10-23 23:20 | 只看該作者
直接找匯編的例程不就好了,這個(gè)源代碼就是匯編寫的,不是C寫的,反匯編估計(jì)不會(huì)成功,05H是內(nèi)存地址05H,跟R5兩碼事
回復(fù)

使用道具 舉報(bào)

6#
ID:884147 發(fā)表于 2022-10-24 08:36 | 只看該作者
51把每個(gè)通用和特殊寄存器都分配了一個(gè)地址,也可以說(shuō)把這些地址起了一個(gè)名字,所以指向地址或使用名字是一樣的,你可以把累加器A換為0E0H試試,就像你的學(xué)號(hào)和名字都是一個(gè)人,換個(gè)馬甲而已
回復(fù)

使用道具 舉報(bào)

7#
ID:1012017 發(fā)表于 2022-10-24 21:56 | 只看該作者
05H就是R5
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表