標(biāo)題: 單片機(jī)+LCD12864 7線屏匯編程序可用 另有疑問需要解答 [打印本頁]

作者: 418854190    時間: 2022-1-13 15:26
標(biāo)題: 單片機(jī)+LCD12864 7線屏匯編程序可用 另有疑問需要解答
源程序C語言  http://www.torrancerestoration.com/bbs/dpj-186645-1.html
匯編程序是反編譯修改后得到的   
圖中圈起來的部分不明白    R5是如何被寫進(jìn)屏幕的  在寫入的部分沒找到和R5相關(guān)的程序  還有R4直接修改成04H去掉DEC R4 顯示就不正常 這是什么原因  

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



                                    MOV   DIP_Y,#01H;     頁                                                                           MOV   DIP_L,#01H;     列

//顯示32x32點陣圖像
disp_blink_32x32:     MOV   R2,DIP_Y;      頁
                      MOV   R5,DIP_L;      列                                                        
                      LCALL lcd_address;   設(shè)定頁列位置
                      MOV   R4,#32;        32像素
                                      MOV   R3,#4;         4頁                                                        
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;                       頁加一
                                      INC R2;              頁加一  
                      LCALL lcd_address;   設(shè)定頁列位置  
                                      MOV   R4,#32;        32像素                                          
                      LJMP W1_3232                                                                                 
W3_3232:              RET   
;==========================================================================
// 頁 列
lcd_address:          MOV   R4,05H                        
                      DEC   R4                           
                      DEC   R2                // 頁減一         
                      MOV   A,R2                        
                      ADD   A,#0B0H;                     
                      MOV   COM,A                        
                      LCALL transfer_command; //設(shè)置頁地址。                     
                      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      

無字庫12864 - 匯編.rar

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


作者: lijn    時間: 2022-10-23 22:17
請教樓主,C用什么軟件反編譯成匯編,看你改的挺好,想學(xué)習(xí),謝謝!
作者: mtdzok    時間: 2022-10-23 22:51
05H就是R5,但R5不一定是05H
作者: mtdzok    時間: 2022-10-23 22:52
05H就是R5,是一個寄存器
作者: 人中狼    時間: 2022-10-23 23:20
直接找匯編的例程不就好了,這個源代碼就是匯編寫的,不是C寫的,反匯編估計不會成功,05H是內(nèi)存地址05H,跟R5兩碼事
作者: mtdzok    時間: 2022-10-24 08:36
51把每個通用和特殊寄存器都分配了一個地址,也可以說把這些地址起了一個名字,所以指向地址或使用名字是一樣的,你可以把累加器A換為0E0H試試,就像你的學(xué)號和名字都是一個人,換個馬甲而已
作者: Fib08    時間: 2022-10-24 21:56
05H就是R5




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1