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

QQ登錄

只需一步,快速開始

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

從STC12到STC8G單片機(jī)的匯編程序移植(日記)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:283954 發(fā)表于 2020-10-20 02:58 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
初學(xué)單片機(jī)是從STC12開始,寫了不少匯編程序,最近多用STC8G來(lái)制作,已經(jīng)移植過(guò)幾個(gè)程序到STC8G,過(guò)程相當(dāng)費(fèi)力,但每次做完后就算了,沒(méi)有記下過(guò)程,等下一次要再移植又再?gòu)念^做起,今晚又開始移植一個(gè)舊軟件,摸了兩個(gè)小時(shí)總算點(diǎn)亮了指示燈,決定一面做一面把移植過(guò)程記在網(wǎng)上,就永遠(yuǎn)不會(huì)忘記了。


1.我的底板的指示燈是在P1.6,所以一開始就在程序最前面寫CLR P1.6, 應(yīng)該是馬上看見(jiàn)等亮起來(lái),結(jié)果沒(méi)有動(dòng)靜,試了幾次,只好先測(cè)試UART1:
TEST:

MOV A, #55H
LCALL SENTONEBYTE
LCALL DELAY1
JMP TEST
上載后用STC ISP串口助手就看見(jiàn)從UART1連續(xù)傳來(lái)的55,表示程序會(huì)動(dòng),而且波特率正確,那為何指示燈不亮呢?翻看已經(jīng)移植過(guò)的舊程序,這才想起原來(lái)新的單片8G的IO口初始是是高阻的,必須設(shè)置,抄下以下這段貼上,指示燈就亮了:
;-----------I/O CONFIGUE
MOV 93H, #00000000B      ;SET P0 0,0=I/0, 0,1=HIGH CURRENT OUTPUT, 1,0=HIGH IMPEDENY INPUT 1,1=OPEN COLLECTIVE OUTPUT
MOV 94H, #00000000B      ;SET P0 (COMBINE WITH 93H THIS IS SENCOND BIT)
MOV 91H, #00000000B      ;SET P1
MOV 92H, #00000000B      ;SET P1
MOV 95H, #00000000B      ;SET P2
MOV 96H, #00000000B      ;SET P2
MOV 0B1H, #00110100B     ;SET P3
MOV 0B2H, #00000000B     ;SET P3 P3.2=MIC P3.4=X P3.5=Y
MOV 0B3H, #00000000B     ;SET P4
MOV 0B4H, #00000000B     ;SET P4
MOV 0C9H, #00000000B     ;SET P5
MOV 0CAH, #00000000B     ;SET P5
MOV 0CBH, #00000000B     ;SET P6
MOV 0CCH, #00000000B     ;SET P6
;MOV 0E1H, #00000000B     ;SET P7
;MOV 0E2H, #00000000B     ;SET P7

待續(xù)。。。


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

來(lái)自 2#
ID:283954 發(fā)表于 2020-10-20 22:16 | 只看該作者
2. 第二步是調(diào)整UART2的波特率,STC12的T2稱為BRT , 專門作為波特率產(chǎn)生器,是8位自動(dòng)重載,控制波特率的寄存器地址是9CH,而STC8G就叫T2,T2有新的模式叫“16 位自動(dòng)重載”,所以要用到兩個(gè)新寄存器:
T2H EQU 0D6H           
T2L EQU 0D7H

比較兩個(gè)初始化程序

STC12的UART2初始化:
INITIAL_UART2: ;USE FOR CLOCK OUT MIDI DATA
MOV S2CON, #01010000B           ;SET AS BAUD VERIABLE, NO ODD/EVEN CHECK
MOV BRT, #BRTLOAD                 ;RELOAD 1152000
ORL AUXR, #10H                       ;BRT START RUN
MOV IE2, #01H                         ;ENABLE UART2 INTERRUPT
RET

STC8G的初始化:
INITIAL_UART2:                       ;USE FOR SENT MIDI DATA
MOV S2CON, #01010000B         ;SET AS BAUD VERIABLE, NO ODD/EVEN CHECK
MOV T2H, #0FFH                     ;18.432 38400 12T=FFF6 1T=FF88 T2 RUN AS 16BIT AUTO LOAD
MOV T2L, #88H                       ;88(18.432M 26U 38400) #6CH=32US=MIDI
CLR 41H
MOV IE2, #00000001B             ;ENABLE TIMER2 INTERR UART2 INTERRUPT
RET

一個(gè)用到BRT, 一個(gè)用到T2H,T2L, 把STC8的UART2初始程序抄進(jìn)來(lái)就是了。
定時(shí)器2還被另一個(gè)寄存器AUXR所控制:

MOV AUXR,#01000101B  
;T0x12,T1x12,UART_M0x6,BRTRUN, ;S2SMOD,BRTx12,EXTRAM, S1BRS(1=UART1 USE BRT 0=USE T1)

這里面的BRTRUN位也就是T2R(T2RUN)控制位,位0是控制UART1該使用哪個(gè)定時(shí)器,改為1后UART1就使用T2為波特率發(fā)生器了,這樣就可以用STC-ISP的串口助手來(lái)觀察T2的波特率了。

編譯后上載,毫無(wú)動(dòng)靜,UART1沒(méi)有收到號(hào)碼,連指示燈也不閃了,只好在程序前面放CLR P1.6,證明程序來(lái)到LCALL SENTONEBYTE就死機(jī)了,最后發(fā)現(xiàn)是AUXR的T2RUN位沒(méi)有開,定時(shí)器沒(méi)有動(dòng),舊的UART2初始化有“ORL AUXR, #10H ;BRT START RUN”句子,新的沒(méi)有,直接把AUXR位4改為1后,就跑動(dòng)起來(lái),正常了。

待續(xù)。。
回復(fù)

使用道具 舉報(bào)

來(lái)自 3#
ID:283954 發(fā)表于 2020-10-21 17:46 | 只看該作者
謝謝各位的建議, 不打算學(xué)C了, 匯編很直接,所有犯錯(cuò)的都是自己的錯(cuò),不會(huì)有語(yǔ)句錯(cuò)的煩惱。STC單片機(jī)從STC12到STC8的改進(jìn)很可喜,而且更加便宜,說(shuō)明書都有看,但記不了那么多,只有通過(guò)實(shí)干累計(jì)經(jīng)驗(yàn)才能記得了。

3. 昨天解決了UART2的問(wèn)題,接下的就是調(diào)整延時(shí)程序了,很明顯STC8跑得比STC12快了一倍左右,LED燈閃很快:

DELAY1:
LCALL DELAY2
LCALL DELAY2
SETB P1.6
LCALL DELAY2
LCALL DELAY2
CLR P1.6
RET

DELAY2:
MOV 35H, #255
SLOWDOWN0:
MOV 34H, #170
SLOWDOWN:
MOV 36H, #2
SLOWDOWN2:
DJNZ 36H, SLOWDOWN2
DJNZ 34H, SLOWDOWN
DJNZ 35H, SLOWDOWN0
RET

改動(dòng)延遲程序的參數(shù)就行了,這些延時(shí)程序只有在起始階段或設(shè)定參數(shù)時(shí)用到,主程序都不用,因?yàn)闀?huì)浪費(fèi)CPU空轉(zhuǎn),一切改動(dòng)好之后,就該脫線運(yùn)轉(zhuǎn)了,在UART1插入JDY-18藍(lán)牙模塊,插上電源,咦!死機(jī)不動(dòng)。拔出藍(lán)牙模塊,再上電,會(huì)動(dòng),插上另一款藍(lán)牙模塊,再上電,會(huì)動(dòng),問(wèn)題肯定是出在JDY-18模塊,究竟是什么原因呢?

同樣的模塊插在STC12沒(méi)問(wèn)題,插上STC8G就不動(dòng),懷疑是藍(lán)牙模塊上電時(shí)TX腳輸出了什么字串干擾了CPU的啟動(dòng),因?yàn)槭謨?cè)說(shuō)CPU啟動(dòng)時(shí)會(huì)先測(cè)試是否有燒錄信號(hào),把TX腳剪掉后上電就能啟動(dòng)了,果然干擾來(lái)自TX腳。但TX腳是必須用的,如何是好呢?最后是重病亂投醫(yī),在TX腳與V+間焊上一個(gè)3K上拉電阻,就這樣意外解決了,看來(lái)是IO腳啟動(dòng)后是高阻問(wèn)題吧?已經(jīng)沒(méi)有精力去追根究底了,會(huì)動(dòng)就好,會(huì)動(dòng)就好,CLOSE CASE 啦!



回復(fù)

使用道具 舉報(bào)

地板
ID:58110 發(fā)表于 2020-10-20 08:07 | 只看該作者
你用C寫,再移植就不會(huì)那么費(fèi)勁了
回復(fù)

使用道具 舉報(bào)

5#
ID:832072 發(fā)表于 2020-10-20 09:06 | 只看該作者
c語(yǔ)言看起來(lái)挺難的
回復(fù)

使用道具 舉報(bào)

6#
ID:385637 發(fā)表于 2020-10-21 10:37 | 只看該作者
用C比匯編簡(jiǎn)單多了呀,移植起來(lái)也簡(jiǎn)單。
回復(fù)

使用道具 舉報(bào)

7#
ID:106977 發(fā)表于 2020-10-21 12:30 | 只看該作者
移植到不同型號(hào)的單片機(jī),即使是STC同一廠家,首先要仔細(xì)閱讀芯片手冊(cè)。比較兩種芯片硬件的不同點(diǎn),特別是自己要用到的部分,做好筆記。再開始修改原來(lái)的程序。C也好匯編也好,才能減少錯(cuò)誤。
回復(fù)

使用道具 舉報(bào)

8#
ID:47286 發(fā)表于 2020-10-22 00:16 | 只看該作者
我只會(huì)c 樓主這樣會(huì)匯編的人 我通常都是心中默默仰望的樣子

從STC的89系開始就接觸 這個(gè)廠家的產(chǎn)品線好亂的 比如12C56XX的片子和其它片子N多配置就不一樣 同一個(gè)ADC中斷法函數(shù)都不能通用

我個(gè)人是自己寫了個(gè)配置文件 每個(gè)程序配置自己的 這樣移植起來(lái)很容易 只要改一下配置文件 其它不動(dòng)直接就可以跑起來(lái)了
回復(fù)

使用道具 舉報(bào)

9#
ID:401564 發(fā)表于 2020-10-22 09:06 | 只看該作者
我用了幾年的匯編,現(xiàn)在在開始學(xué)C了,匯編的缺點(diǎn)太多了,主要是太考驗(yàn)一個(gè)的嚴(yán)謹(jǐn)性了,很有可能只是一個(gè)指令不對(duì),你搞一個(gè)星期都找不到問(wèn)題出現(xiàn)在哪里,特別是在有復(fù)雜運(yùn)算的情況下,STC8G倒是有點(diǎn)進(jìn)步了,有了一個(gè)16位的乘除法器,這個(gè)到你要用的時(shí)候你就會(huì)知道這玩意的好處了,其它的功能都是些花里胡哨的功能
但如果還要有更復(fù)雜的算法,那就是恐怖級(jí)別的,像PID算法,如果用C語(yǔ)言的話,也就是幾個(gè)語(yǔ)句完成,如果用匯編,估計(jì)是200條指令以上,我前幾個(gè)月在搞一個(gè)重力加速度的程序,現(xiàn)在先停下來(lái)了,用匯編太難搞了,所以,還是先停下來(lái)學(xué)一下C
至于移植性,在真正的實(shí)用項(xiàng)目面前,C和匯編是一樣的,基本是沒(méi)有移植性,最多是復(fù)制幾段代碼而已,其它的基本是重新寫,像STC的單片機(jī)從12C到8G,幾乎每個(gè)外設(shè)功能,像ADC,PWM,串口這些的,寄存器和操作都是不一樣的,都得按照數(shù)據(jù)手冊(cè)來(lái)改的
有匯編經(jīng)驗(yàn)的,學(xué)C是相對(duì)要快的,思想轉(zhuǎn)變一下,不出幾個(gè)月,你就會(huì)發(fā)現(xiàn)C比匯編好太多了,現(xiàn)在的單片機(jī),匯編唯一的優(yōu)點(diǎn)是在低成本單片機(jī)上,用匯編大多是公司指定要用匯編的,用C你也寫不下,有的國(guó)產(chǎn)單片機(jī)程序空間只有512B,但成本應(yīng)該是一兩毛一片,我做LED手電用的就是這種,LED手電它不要什么功能,就是開關(guān),閃燈和低電壓指示
至于效率和時(shí)序這些優(yōu)點(diǎn)早就沒(méi)有了
有C經(jīng)驗(yàn)的去學(xué)匯編,那就難了
回復(fù)

使用道具 舉報(bào)

10#
ID:744327 發(fā)表于 2020-10-22 14:12 | 只看該作者
匯編接近單片機(jī)底層了。在TX腳與V+間焊上一個(gè)3K上拉電阻,是干擾問(wèn)題。有時(shí),數(shù)據(jù)傳輸干擾很嚴(yán)重。
回復(fù)

使用道具 舉報(bào)

11#
ID:283954 發(fā)表于 2020-10-24 02:24 | 只看該作者
謝謝YGG分享學(xué)習(xí)經(jīng)驗(yàn),對(duì)我而言,匯編就很夠用了,能自己規(guī)劃使用CPU內(nèi)的資源很有滿足感,單片機(jī)發(fā)展到現(xiàn)在功能可以說(shuō)是非常齊全,這些功能以前是必須用外部元件來(lái)完成的,要玩看門狗,ADC,PWM都得自己設(shè)計(jì)電路才可以,現(xiàn)在幾塊錢一個(gè)單片機(jī)就可以玩了,用匯編來(lái)寫軟件也能做到模塊化,用LCALL跑副程序非常好用。

4. 軟件移植完成后我又忙著焊多幾片板來(lái)測(cè)試,這里順便給大家看我用來(lái)放置QFN48的裝置,sam2695實(shí)在太小了,腳又多,在電路板被確定無(wú)誤的過(guò)程中必須有能力焊出一片來(lái)測(cè)試,因此就搞了這個(gè)裝置,底版放在一個(gè)能X-Y-Z-R調(diào)整的微調(diào)平臺(tái),IC用吸風(fēng)機(jī)吸在半空,用帶燈的放大鏡看,調(diào)整到腳對(duì)齊了,關(guān)閉吸風(fēng)機(jī),IC自由落體掉下來(lái)就行了。





回復(fù)

使用道具 舉報(bào)

12#
ID:283954 發(fā)表于 2021-9-5 02:38 | 只看該作者
移植含ADC的STC12程序到STC8G要點(diǎn):

最近把含ADC的STC12程序移植到STC8G,因?yàn)橛羞^(guò)經(jīng)驗(yàn),信心十足,可是還是花了幾天找不到毛病,無(wú)法產(chǎn)生UART中斷,又發(fā)現(xiàn)多次驗(yàn)證過(guò)的T2L和T2H設(shè)定值產(chǎn)生不了T2的波特率,后來(lái)發(fā)現(xiàn),原本用18.432燒錄的程序改為11.0952燒錄,就可以得到正確的波特率,夠玄了,難道STC8G2K的時(shí)鐘加快了?直到把初始時(shí)的一個(gè)副程式給禁止掉,問(wèn)題才浮現(xiàn)出來(lái):

ADCINIT:
MOV P1ASF, #10000001B     ;SET P1.0 AS ADC FOR VOLUME P1.7 FOR EXT ADC
MOV ADC_R, #0             ;CLEAR PREVIOUS RESULT
MOV ADC_C, 57H            ;P0WER, SPEED1,SPEED0, ADCFLAG, ADCSTART, CHS2, CHS1, CHS0, ON POWER, HIGH SPEED,CLRFLAG, CHANNEL #0
NOP
NOP
NOP
RET

原本STC12做ADC用的PIASF寄存器的地址在STC8G已經(jīng)改為“IRC頻段檢測(cè)檢測(cè)”,賦值后時(shí)鐘頻率會(huì)改變,造成T2的波特率不對(duì)了。

另外STC12與STC8G的ADC_C雖然都是在BCH, 但有幾個(gè)位已經(jīng)變更位置了,有一個(gè)位拿去用作ADC_EPWMT,這一賦值就產(chǎn)生不可預(yù)料的結(jié)果,造成UART2產(chǎn)生不了中斷。

那個(gè)ADC_R沒(méi)問(wèn)題,

結(jié)論:移植前記得把所有ADC的副程式禁止掉,以免浪費(fèi)時(shí)間找毛病。
回復(fù)

使用道具 舉報(bào)

13#
ID:99987 發(fā)表于 2021-9-7 10:56 | 只看該作者
樓主品德、人格不錯(cuò),是個(gè)嚴(yán)謹(jǐn)?shù)娜,?jiān)持自己,堅(jiān)持真理,走自己的路,不隨波逐流,樓主繼續(xù)保持。底層語(yǔ)言是地基,非常重要,高級(jí)語(yǔ)言有一定的束縛,雖然代碼效率高,但很容易或肯定被卡脖子,因?yàn)楦呒?jí)語(yǔ)言非常依賴官方做好的函數(shù)庫(kù),具體內(nèi)部構(gòu)架、執(zhí)行的內(nèi)容你并不了解,日后人家不提供了,高級(jí)語(yǔ)言做的代碼將沒(méi)有靈魂,只剩軀體沒(méi)有生機(jī)而慢慢衰敗而死掉。
回復(fù)

使用道具 舉報(bào)

14#
ID:283954 發(fā)表于 2021-9-8 01:55 | 只看該作者
madell 發(fā)表于 2021-9-7 10:56
樓主品德、人格不錯(cuò),是個(gè)嚴(yán)謹(jǐn)?shù)娜,?jiān)持自己,堅(jiān)持真理,走自己的路,不隨波逐流,樓主繼續(xù)保持。底層語(yǔ)言 ...

謝謝你的鼓勵(lì)!用匯編來(lái)寫單片機(jī)程序可以學(xué)會(huì)很多計(jì)算機(jī)的底層原理,這也是我興趣的,隨著自己寫的代碼越來(lái)越多,也就有了自己的“庫(kù)”,寫起來(lái)也就越來(lái)越方便。用高級(jí)語(yǔ)言寫好像很便利,但出現(xiàn)問(wèn)題時(shí)比較難排除,論壇上很多人問(wèn)的都是語(yǔ)法錯(cuò)誤,匯編語(yǔ)言則直接指到指令行,多好。
回復(fù)

使用道具 舉報(bào)

15#
ID:283954 發(fā)表于 2021-9-15 23:47 | 只看該作者
終于把原本是STC125A60S2的ADC程序給移植到STC8G2K64S2了,代碼不需要什么改變,就是初始化有些不同:

INITADC:
MOV P_SW2,#80H           ;訪問(wèn)X寄存器打開
MOV DPTR,#ADCTIM;       ;設(shè)置 ADC 內(nèi)部時(shí)序 #0FEA8H 這是廠家的數(shù)值
MOV A,#3FH                  ;必須通過(guò)A才能送到
MOVX @DPTR,A
MOV P_SW2,#00H           ;訪問(wèn)X寄存器關(guān)閉
MOV ADCCFG,#04H         ;設(shè)置 ADC 時(shí)鐘為系統(tǒng)時(shí)鐘/2/XXXX 16=慢,8=快 B6決定結(jié)果的格式 8=45US, 4=26US F=每81US一次
;MOV ADC_CONTR,#10001111B ;使能 ADC 模塊, #1000 CCCC B 通道暫定15  為內(nèi)部參考電壓1.91V
MOV ADC_CONTR,#10000111B ;使能 ADC 模塊, #1000 CCCC B 通道07

ADC的時(shí)序設(shè)定是放在外(X)寄存器,需要打開一個(gè) P_SW2開關(guān)去賦值。

另外發(fā)現(xiàn)硬件有些不同,我的紅外線發(fā)射時(shí)靠MCU內(nèi)的T0產(chǎn)生40K方波在P3.4腳輸出的,但兩款MCU的T0輸出腳不不同的
STC12:
MOV WAKE_CLKO,#00000001B     ;HAVE CLOCK OUTPUT BRT@P1.0 T1@P3.5 T0@P3.4

STC8G:
MOV INTCLKO, #00000010B         ;T2@P3.0 T1@P3.4 T0@P3.5

T0與T1的輸出腳對(duì)調(diào)了,移植完畢后,發(fā)現(xiàn)ADC的輸出值一直是零,用內(nèi)部基準(zhǔn)電壓ADC15測(cè)定也是零,我這ADC代碼可是經(jīng)過(guò)驗(yàn)證的,絕對(duì)沒(méi)錯(cuò),但就是不行,只好再去看說(shuō)明書,看到紅字說(shuō)明:ADC的外部參考電源管腳ADC_VREF+一定不能浮空,這才發(fā)現(xiàn)這一低級(jí)錯(cuò)誤,這管腳就在V+旁邊,用絡(luò)鐵焊上點(diǎn)錫造成短路,一切就正常了。




回復(fù)

使用道具 舉報(bào)

16#
ID:262 發(fā)表于 2021-9-17 18:34 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

17#
ID:383215 發(fā)表于 2021-9-21 15:29 | 只看該作者
看了這個(gè)帖子,真是讓我感慨萬(wàn)千。侵鲝娜ツ10月搞到現(xiàn)在,快一年了,一直不打算學(xué)C,精神可嘉!然而我至少用了六年的匯編,才學(xué)的C,究竟匯編好用還是C好用,這個(gè)問(wèn)題說(shuō)清楚足夠?qū)懗鲆淮笃恼铝,?jiǎn)單說(shuō),樓主如果還不想學(xué)C的話,進(jìn)展緩慢,我用了六年的匯編,現(xiàn)在讓我回去用匯編,我一萬(wàn)個(gè)不愿意?吹綐侵饔昧薙AM2695,恰恰我也用過(guò),對(duì)于樓主焊接SAM2695的方法,我狂暈啊,哪里會(huì)有那么復(fù)雜?




看看我手工做出來(lái)的試驗(yàn)板,焊接SAM2695毫無(wú)壓力,樓主怎么搞的那么復(fù)雜,我只提醒幾點(diǎn),就用恒溫精度稍微高一點(diǎn)的936電烙鐵,要用純銅的烙鐵頭,越尖越好,不夠尖自己打磨,再把松香用好,放大鏡看見(jiàn)位置擺好了,輕輕松松的就可以把SAM2695焊上去,SAM2695肚子下面的接地,畫電路板打一個(gè)大一點(diǎn)的孔,最后用烙鐵焊點(diǎn)錫進(jìn)去就完事了。樓主用的是機(jī)制板,對(duì)我來(lái)說(shuō),焊接SAM2695更是沒(méi)有任何壓力可言。我手工做電路板,15mil安全間距和線寬成功率很高,10mil安全間距和線寬成功率不太高,由于SAM2695的安全間距和線寬低于10mil,我就做個(gè)小擴(kuò)展板,先把SAM2695焊在擴(kuò)展板上再把擴(kuò)展板焊在電路板上,擴(kuò)展板一次做四個(gè),總有一個(gè)成功,擴(kuò)展板很小,就算做失敗浪費(fèi)也不大,現(xiàn)在10×10以內(nèi)的打樣免費(fèi)了,我也寧愿自己做板,像這樣只做一片搞不清楚是否成功的情況下,我免費(fèi)做5片就是浪費(fèi)。我非常尊重別人的勞動(dòng),我用熱轉(zhuǎn)印做手工電路板輕車熟路,我把需要做試驗(yàn)的電路攢夠幾個(gè)到十幾個(gè)品種,花個(gè)一天時(shí)間做出來(lái),就算每個(gè)月有四個(gè)品種的免費(fèi)打樣,浪費(fèi)實(shí)在太大了,就算免費(fèi),依然是浪費(fèi),我只有試驗(yàn)成功的電路板,把握性很大的情況下才會(huì)去打樣。
從匯編到焊接SAM2695,明顯感覺(jué)樓主最大的問(wèn)題是不會(huì)找捷徑,建議樓主立即學(xué)習(xí)C,我經(jīng)常把51和AVR單片機(jī)的程序雙向移植過(guò)來(lái),移植過(guò)去,樓主覺(jué)得STC單片機(jī)的兩個(gè)型號(hào)之間的匯編程序移植都有點(diǎn)困難,換個(gè)品種的單片機(jī)用匯編移植,如何移植?如果樓主繼續(xù)用匯編就是繼續(xù)走彎路,樓主覺(jué)得匯編直觀,擔(dān)心C不好用,我以前也有這個(gè)擔(dān)心,匯編能做到的,C基本上都能做到,實(shí)在做不到的,還可以混合編程,也就是用C來(lái)調(diào)用匯編,然而我至今都沒(méi)有搞過(guò)混合編程,我遇到的所有問(wèn)題,C就解決了,C的編程效率比匯編高10倍以上,移植程序也比匯編簡(jiǎn)單好幾倍。樓主的焊工,有待于提高,必須學(xué)會(huì)用電烙鐵把SAM2695焊上去。再看PCB,走線不應(yīng)該出現(xiàn)90度轉(zhuǎn)角,有的走線到焊盤,沒(méi)有經(jīng)過(guò)圓心,走線方面仍然有待于提高。


回復(fù)

使用道具 舉報(bào)

18#
ID:283954 發(fā)表于 2021-9-22 03:16 | 只看該作者
佩服佩服!能手工焊接sam2695的手藝真高超,我四年前從焊接穿孔插件,慢慢學(xué)焊到SMD,越焊越小,到了這QFN48就投降了,恨這些IC怎么這么小,為了克服難關(guān),就購(gòu)買這些器材來(lái)幫忙了,成績(jī)是焊了10片,七片成功,還算不錯(cuò),基本上證明線路無(wú)誤就行了。

我的板子都是付款打樣,一般要打樣三次才定型,所以家里留下大量無(wú)用底板,鋼網(wǎng)也不少,心感不安,后來(lái)聽(tīng)到一句話說(shuō)“都是機(jī)器做的,不要緊的”,也就釋懷了。

畫底板的水平只是達(dá)到“接通”,什么電磁干擾全不懂考慮,好在我的設(shè)計(jì)多是電池供電,干擾很小,很少跑飛。

我學(xué)單片機(jī)只是為了做自己的項(xiàng)目,主要是關(guān)于電子琴的東西,所以用51單片機(jī)就很夠了。
匯編語(yǔ)言非常夠用了,復(fù)雜的下點(diǎn)苦功也就做完了,好處是不必學(xué)另一種語(yǔ)法,來(lái)這論壇后C語(yǔ)言基本上能看懂,但沒(méi)有寫的欲望,除非有一天要搞什么項(xiàng)目,非得C不可,就會(huì)乖乖學(xué)起。
回復(fù)

使用道具 舉報(bào)

19#
ID:298713 發(fā)表于 2021-9-22 08:47 | 只看該作者
    匯編效率太低,可移植性又差。C語(yǔ)言絕對(duì)是開發(fā)MCU的好工具!現(xiàn)在的51內(nèi)核的MCU上集成了很多的外設(shè),如果還是用匯編,可讀性與可維護(hù)性也差,開發(fā)周期也長(zhǎng)。在公司研發(fā)上這是不允許的。
   另外應(yīng)該學(xué)習(xí)使用STC宏晶提供的API庫(kù)函數(shù)做開發(fā)工具,效率更高。
回復(fù)

使用道具 舉報(bào)

20#
ID:283954 發(fā)表于 2021-10-1 04:02 | 只看該作者
wjw7680 發(fā)表于 2021-9-22 08:47
匯編效率太低,可移植性又差。C語(yǔ)言絕對(duì)是開發(fā)MCU的好工具!現(xiàn)在的51內(nèi)核的MCU上集成了很多的外設(shè),如 ...

說(shuō)得沒(méi)錯(cuò),學(xué)會(huì)C語(yǔ)言才有可能在職場(chǎng)找到職位,而我寫代碼遇到麻煩時(shí),總會(huì)想:如果這時(shí)老板催說(shuō)要交貨了,得快點(diǎn),那是一種怎樣的心情?因此我不敢把寫代碼當(dāng)職業(yè),只能業(yè)余玩玩匯編。
回復(fù)

使用道具 舉報(bào)

21#
ID:966104 發(fā)表于 2021-10-4 00:09 | 只看該作者
還是用C吧,可以模塊化...移植性大大提高
回復(fù)

使用道具 舉報(bào)

22#
ID:345426 發(fā)表于 2021-11-24 08:41 | 只看該作者
想起敲匯編的時(shí)代,真是爽,估計(jì)只有體會(huì)過(guò)才知道
回復(fù)

使用道具 舉報(bào)

23#
ID:975054 發(fā)表于 2021-12-23 09:39 | 只看該作者
過(guò)來(lái)人不少,我?guī)资晟漕l工程師,才開始學(xué)c語(yǔ)言,stc8起步,四個(gè)月了,產(chǎn)品數(shù)字化輕量化超低功耗改進(jìn)很成功.
STC型號(hào)太多,小揪揪太多...得反復(fù)看手冊(cè)例程逐步優(yōu)化.......
回復(fù)

使用道具 舉報(bào)

24#
ID:17204 發(fā)表于 2022-2-16 15:27 | 只看該作者
佩服這么多牛人,向這些大佬致敬
回復(fù)

使用道具 舉報(bào)

25#
ID:1003226 發(fā)表于 2022-2-23 10:40 | 只看該作者
會(huì)匯編的,真是牛人
回復(fù)

使用道具 舉報(bào)

26#
ID:922504 發(fā)表于 2022-3-16 09:20 | 只看該作者
dalaoshi 發(fā)表于 2021-9-8 01:55
謝謝你的鼓勵(lì)!用匯編來(lái)寫單片機(jī)程序可以學(xué)會(huì)很多計(jì)算機(jī)的底層原理,這也是我興趣的,隨著自己寫的代碼越 ...

哈哈  我也是這樣想的  可惜我還很差  繼續(xù)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

27#
ID:74953 發(fā)表于 2022-5-19 20:48 | 只看該作者
kmsj 發(fā)表于 2021-9-21 15:29
看了這個(gè)帖子,真是讓我感慨萬(wàn)千!樓主從去年10月搞到現(xiàn)在,快一年了,一直不打算學(xué)C,精神可嘉!然而我 ...

你好大神,這個(gè)SAM2695是法國(guó)DREAM的MIDI音源芯片嗎? 這東西里面不需要寫固件,直接用單片機(jī)串口輸入MIDI格式命令就可以播放音樂(lè)是嗎?還是需要SPI口?
回復(fù)

使用道具 舉報(bào)

28#
ID:383215 發(fā)表于 2022-5-20 20:58 | 只看該作者
cornrn 發(fā)表于 2022-5-19 20:48
你好大神,這個(gè)SAM2695是法國(guó)DREAM的MIDI音源芯片嗎? 這東西里面不需要寫固件,直接用單片機(jī)串口輸入MID ...

我不是大神,SAM2695是法國(guó)DREAM的MIDI音源芯片,不需要固件,直接發(fā)送標(biāo)準(zhǔn)MIDI信號(hào)就可以發(fā)聲,連接USB轉(zhuǎn)MIDI芯片CH345可以播放電腦MIDI音樂(lè),效果超過(guò)電腦聲卡,本論壇有詳細(xì)資料下載http://www.torrancerestoration.com/bbs/dpj-83651-1.html
回復(fù)

使用道具 舉報(bào)

29#
ID:283954 發(fā)表于 2022-11-10 15:19 | 只看該作者
昨晚把以前寫好的TFT顯示屏程序取出來(lái),用在新的128X160的帶觸摸顯示屏,更改了接腳的定義后,很快就能顯示了,但有點(diǎn)毛病,查了半天才發(fā)現(xiàn)原來(lái)STC12和STC8的雙DPTR指針控制器不同(AUXR1 DPS),改正以后就正常了。這代碼寫好后一直沒(méi)什么用途,所以沒(méi)有進(jìn)步,現(xiàn)在打算用來(lái)做一個(gè)藍(lán)牙MIDI接收器,顯示樂(lè)器的名字,方便設(shè)定電吹管和電子琴。把代碼貼在這,方便查找。






;PIN CONNECT IC:ST7735S 14/09/2018 USE IN ULTRA BOARD
SCL EQU P0.7  ;SPICLK  
SDA EQU P0.6  ;MISO  
BL EQU P0.1   ;(BACK LIGHT)1=ON 0=OFF
RES EQU P0.5  ;(RESET) 0=RESET
DACM EQU P0.4 ;0=COMMAND, 1=DATA
CS EQU P0.3   ;CLIP SELECT 0=ENABLE 1=DISABLE (EVERY COMMAND NEED 0 THEN 1


;30H STORE BYTE FOR WRITE TO LCD
;31H TEMP STORE
;32H FOR COLUME
;33H FOR ROW
;34H FOR STORE H-COLOR BYTE
;35H FOR STORE L-COLOR BYTE
;36H FOR STORE BACK H-COLOR BYTE
;37H FOR STORE BACK L-COLOR BYTE
;38H CHRACTER FOR DISPLAY

;55H, 56H, 57H FOR DELAYLOOP
;70H-7FH STORE STRING FOR DISPLAY
;MOV 97H, #00000111; SLOW DOWN
P4SW EQU 0BBH
P4 EQU 0C0H
MOV P4SW, #00010000B ;TURN ON P4.4 PORT

AUXR1 EQU 0A2H ;7,6=PCA-P4,5=SPI-P4,4=S2-P4,3=GF2,2=ADRJ,1,0=DPS(0=DPTR1,1=DPTR2)
CLR BL
CLR RES         ;RESET
LCALL DELAY2
SETB RES
LCALL DELAY2

MOV 30H, #11H   ;Sleep exit
LCALL LCDCOMMAND
LCALL DELAY1

MOV 30H, #3AH   ;65k mode
LCALL LCDCOMMAND
MOV 30H, #05H
LCALL LCDDATA
MOV 30H, #29H   ;//Display on
LCALL LCDCOMMAND

LCALL SETAREA
LCALL CLEARSCREEN
LCALL DELAY2
SETB BL ;ON BACKLIGHT
LCALL SHOWLOGO ;lao cai pai

MOV DPTR, #1500H
MOV 32H, #0
MOV 33H, #7
MOV 34H, #0FFH
MOV 35H, #0FFH
MOV 36H, #0
MOV 37H, #0
LCALL SETWORD
LCALL SHOWVERSION

START:
MOV 70H, #"F";
MOV 71H, #"I";
MOV 72H, #"S";
MOV 73H, #"H";
MOV 74H, #" ";
MOV 75H, #"L";
MOV 76H, #"e";
MOV 77H, #"e";
MOV 78H, #"K";
MOV 79H, #"u";
MOV 7AH, #"a";
MOV 7BH, #"n";
MOV 7CH, #"Y";
MOV 7DH, #"e";
MOV 7EH, #"w";
MOV 7FH, #13;

MOV 32H, #0
MOV 33H, #0
;LCALL SETWORD
;MOV 38H, #"E";
LCALL SHOWSTRING
MOV 32H, #0
INC 33H
LCALL SHOWSTRING
MOV 32H, #0
INC 33H
LCALL SHOWSTRING
MOV 32H, #0
INC 33H
LCALL SHOWSTRING


LOOP:
SETB P4.4
LCALL DELAY2
CLR P4.4
LCALL DELAY2

JMP LOOP

SHOWSTRING:
MOV R0, #70H
SHOWSTRING1:
MOV A, @R0
CJNE A, #13, SHOWSTRING2
JMP SHOWSTRINGEXIT
SHOWSTRING2:
MOV 38H, A
LCALL SHOWCHR
INC R0
JMP SHOWSTRING1
SHOWSTRINGEXIT:
RET


SHOWVERSION:
MOV AUXR1, #1 ;USE 2DPTR
MOV DPTR ,#1500H
SHOWVERSION2:
MOV A, #0
MOV AUXR1, #1 ;USE 2DPTR
MOVC A, @A+DPTR
INC DPTR
MOV AUXR1, #0 ;USE 1DPTR
CJNE A, #32, SHOWVERSION3 ;USE 127 AS SPACE PATTERN
MOV A, #127
SHOWVERSION3:
CJNE A, #13, GOSHOW
JMP EXITSHOWVERSION
GOSHOW:
MOV 38H, A
LCALL SHOWCHR
JMP SHOWVERSION2
EXITSHOWVERSION:
RET

SHOWLOGO:
MOV 32H, #0 ;COL
MOV 33H, #0 ;ROW
;MOV 34H, #0F0H
MOV 35H, #0
MOV 36H, #0
MOV 37H, #0
MOV DPTR, #1600H
LCALL SETLOGO1
MOV 34H, #0F0H
LCALL SHOWASC32
LCALL SETLOGO2
MOV 34H, #8FH
LCALL SHOWASC32
LCALL SETLOGO3
MOV 34H, #0FFH
LCALL SHOWASC32
RET

SHOWASC32:
MOV 55H, #128
SHOWASC322:
MOV A, #0
MOVC A,@A+DPTR
MOV 31H, A ;STORE
MOV R1,#8
ROLLBIT32:
MOV A, 31H
RLC A
MOV 31H, A
JC ONEPIXEL32
ZEROPIXEL32:
LCALL PUTPIXELZERO
JMP NEXTWORDBIT32
ONEPIXEL32:
LCALL PUTPIXELONE
NEXTWORDBIT32:
DJNZ R1, ROLLBIT32
INC DPTR
DJNZ 55H,SHOWASC322
RET

SHOWCHR:    ;NEED TO COUNT CHARACTER POSITION AT MAP
MOV A, 38H
CJNE A, #32, SHOWCHR1 ;USE 127 AS SPACE PATTERN
MOV A, #127
SHOWCHR1:
CLR C       ;LEARN LONG TIME
SUBB A, #48 ;CHARATER DOT STORE START FROM CHR(48)
MOV B, #16  ;EACH CHARACTER NEED 16BYTE TO STORE
MUL AB
MOV DPL, A
MOV A, B    ;OVER 255 STORE AT B
ADD A, #10H ;ASC MAP START AT #1000H
MOV DPH, A
LCALL SETWORD
LCALL SHOWASC
RET

SETWORD:         ;AUTO INCEASE AFTER SET
MOV 30H, #2AH
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV A, 32H       ;COUNT COL
MOV B, #8
MUL AB
INC A
MOV B, A         ;SAVE TO B

MOV 30H, A       ;x_start+2
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV A, B
ADD A, #8
MOV 30H, A       ;x_end+2
LCALL LCDDATA

MOV 30H, #2BH
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV A, 33H       ;COUNT ROW
MOV B, #16
MUL AB
MOV B, A         ;SAVE TO B
MOV 30H, A       ;Y_start+3
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV A, B
ADD A, #16
MOV 30H, A       ;Y_end+2
LCALL LCDDATA
MOV 30H, #2CH
LCALL LCDCOMMAND
MOV A, 32H
CJNE A, #15, NOTMAX1
MOV 32H, #0
JMP CHECKROW
NOTMAX1:
INC A
MOV 32H, A
JMP CHECKEXIT
CHECKROW:
MOV A, 33H
CJNE A, #7, NOTMAX2 ;7
MOV 33H, #0
JMP CHECKEXIT
NOTMAX2:
INC A
MOV 33H, A
CHECKEXIT:
RET

SHOWASC:
MOV R5, #16
SHOWASC2:
MOV A, #0
MOVC A,@A+DPTR
MOV 31H, A ;STORE
MOV R1,#8 ;9
ROLLBIT:
MOV A, 31H
RLC A
MOV 31H, A
JC ONEPIXEL
ZEROPIXEL:
LCALL PUTPIXELZERO
JMP NEXTWORDBIT
ONEPIXEL:
LCALL PUTPIXELONE
NEXTWORDBIT:
DJNZ R1, ROLLBIT
LCALL PUTPIXELZERO
INC DPTR
DJNZ R5,SHOWASC2
RET

PUTPIXELONE:
MOV 30H, 34H ;BLUE SCREEN
LCALL LCDDATA
MOV 30H, 35H
LCALL LCDDATA
RET

PUTPIXELZERO:
MOV 30H, 36H ;WHITE SCREEN
LCALL LCDDATA
MOV 30H, 37H
LCALL LCDDATA
RET

CLEARSCREEN:
MOV 34H, #00H
MOV 35H, #0H
MOV 36H, #0
MOV 37H, #0
MOV R4, #64 ;#192
CLEARBIT:
MOV 30H, 34H
LCALL LCDDATA
MOV 30H, 35H
LCALL LCDDATA
DJNZ R3, CLEARBIT
DJNZ R4, CLEARBIT
RET

LCDDATA:
CLR CS
SETB DACM
LCALL SPIWRITE
SETB CS
RET

LCDCOMMAND:
CLR CS
CLR DACM
LCALL SPIWRITE
SETB CS
RET

SPIWRITE: ;30H
MOV R6, #8
NEXTBIT:
MOV A, 30H
RLC A
MOV 30H, A
;MOV P2, A
JC ONE
CLR SDA
CLR SCL ;CLOCK
NOP
NOP
SETB SCL
JMP ZERO
ONE:
SETB SDA
CLR SCL ;CLOCK
NOP
NOP
NOP
NOP
NOP
NOP
SETB SCL
ZERO:
DJNZ R6, NEXTBIT
RET

SETLOGO1:
MOV 30H, #2AH
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV 30H, #15      ;x_start+2 #18
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV 30H,#46    ;x_end+2
LCALL LCDDATA
LCALL SETLOGOV
RET

SETLOGO2:
MOV 30H, #2AH
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV 30H, #49      ;x_start+2
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV 30H,#80     ;x_end+2
LCALL LCDDATA
LCALL SETLOGOV
RET

SETLOGO3:
MOV 30H, #2AH
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV 30H, #83      ;x_start+2
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV 30H,#114     ;x_end+2
LCALL LCDDATA
LCALL SETLOGOV
RET

SETLOGOV:
MOV 30H, #2BH
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV 30H, #76      ;Y_start+3
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV 30H,#108    ;Y_end+2
LCALL LCDDATA
MOV 30H, #2CH
LCALL LCDCOMMAND
RET

SETAREA: ;THIS SET AN AREA
MOV 30H, #2AH    ;COLUME SET
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV 30H, #2      ;x_start+2 2
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV 30H,#129     ;x_end+2
LCALL LCDDATA

MOV 30H, #2BH    ;ROW SET
LCALL LCDCOMMAND
MOV 30H, #0
LCALL LCDDATA
MOV 30H, #1      ;Y_start+3
LCALL LCDDATA
MOV 30H, #0
LCALL LCDDATA
MOV 30H,#128    ;Y_end+2
LCALL LCDDATA
MOV 30H, #2CH
LCALL LCDCOMMAND
RET

DELAY1:
MOV 56H, #20
DELAY1A:
MOV 55H, #200
DELAY1B:
DJNZ 55H, DELAY1B
DJNZ 56H, DELAY1A
RET

DELAY2:
MOV 56H, #255
DELAY2A:
MOV 55H, #255
DELAY2B:
MOV 57H, #2
DELAY2C:
DJNZ 57H, DELAY2C
DJNZ 55H, DELAY2B
DJNZ 56H, DELAY2A
RET


ORG 1000H ;ASC 8X16 FONT:SYSTEM
DB 00H,00H,00H,1EH,33H,37H,37H,33H,3BH,3BH,33H,1EH,00H,00H,00H,00H;"0",31
DB 00H,00H,00H,0CH,1CH,7CH,0CH,0CH,0CH,0CH,0CH,0CH,00H,00H,00H,00H;"1",32
DB 00H,00H,00H,3CH,66H,66H,06H,0CH,18H,30H,60H,7EH,00H,00H,00H,00H;"2",33
DB 00H,00H,00H,3CH,66H,66H,06H,1CH,06H,66H,66H,3CH,00H,00H,00H,00H;"3",34
DB 00H,00H,00H,30H,30H,36H,36H,36H,66H,7FH,06H,06H,00H,00H,00H,00H;"4",35
DB 00H,00H,00H,7EH,60H,60H,60H,7CH,06H,06H,0CH,78H,00H,00H,00H,00H;"5",36
DB 00H,00H,00H,1CH,18H,30H,7CH,66H,66H,66H,66H,3CH,00H,00H,00H,00H;"6",37
DB 00H,00H,00H,7EH,06H,0CH,0CH,18H,18H,30H,30H,30H,00H,00H,00H,00H;"7",38
DB 00H,00H,00H,3CH,66H,66H,76H,3CH,6EH,66H,66H,3CH,00H,00H,00H,00H;"8",39
DB 00H,00H,00H,3CH,66H,66H,66H,66H,3EH,0CH,18H,38H,00H,00H,00H,00H;"9",40
DB 00H,00H,00H,00H,00H,00H,18H,18H,00H,00H,00H,00H,18H,18H,00H,00H;":",0
DB 00H,00H,00H,00H,00H,00H,00H,10H,00H,00H,00H,00H,00H,10H,10H,20H;";",1
DB 00H,00H,00H,02H,04H,08H,10H,20H,40H,20H,10H,08H,04H,02H,00H,00H;"<",2
DB 00H,00H,00H,00H,00H,00H,0FEH,00H,00H,00H,0FEH,00H,00H,00H,00H,00H;"=",3
DB 00H,00H,00H,40H,20H,10H,08H,04H,02H,04H,08H,10H,20H,40H,00H,00H;">",4
DB 00H,00H,00H,3CH,42H,42H,62H,02H,04H,08H,08H,00H,18H,18H,00H,00H;"?",5
DB 00H,00H,00H,38H,44H,5AH,0AAH,0AAH,0AAH,0AAH,0B4H,42H,44H,38H,00H,00H;"@",6
DB 00H,00H,00H,18H,3CH,66H,66H,66H,7EH,66H,66H,66H,00H,00H,00H,00H;"A",0
DB 00H,00H,00H,7CH,66H,66H,66H,7CH,66H,66H,66H,7CH,00H,00H,00H,00H;"B",1
DB 00H,00H,00H,3CH,66H,66H,60H,60H,60H,66H,66H,3CH,00H,00H,00H,00H;"C",2
DB 00H,00H,00H,78H,6CH,66H,66H,66H,66H,66H,6CH,78H,00H,00H,00H,00H;"D",3
DB 00H,00H,00H,7EH,60H,60H,60H,7CH,60H,60H,60H,7EH,00H,00H,00H,00H;"E",4
DB 00H,00H,00H,7EH,60H,60H,60H,7CH,60H,60H,60H,60H,00H,00H,00H,00H;"F",5
DB 00H,00H,00H,3CH,66H,66H,60H,60H,6EH,66H,66H,3EH,00H,00H,00H,00H;"G",6
DB 00H,00H,00H,66H,66H,66H,66H,7EH,66H,66H,66H,66H,00H,00H,00H,00H;"H",7
DB 00H,00H,00H,3CH,18H,18H,18H,18H,18H,18H,18H,3CH,00H,00H,00H,00H;"I",8
DB 00H,00H,00H,06H,06H,06H,06H,06H,06H,66H,66H,3CH,00H,00H,00H,00H;"J",9
DB 00H,00H,00H,66H,66H,6CH,6CH,78H,6CH,6CH,66H,66H,00H,00H,00H,00H;"K",10
DB 00H,00H,00H,60H,60H,60H,60H,60H,60H,60H,60H,7EH,00H,00H,00H,00H;"L",11
DB 00H,00H,00H,63H,63H,77H,6BH,6BH,6BH,63H,63H,63H,00H,00H,00H,00H;"M",12
DB 00H,00H,00H,63H,63H,73H,7BH,6FH,67H,63H,63H,63H,00H,00H,00H,00H;"N",13
DB 00H,00H,00H,3CH,66H,66H,66H,66H,66H,66H,66H,3CH,00H,00H,00H,00H;"O",14
DB 00H,00H,00H,7CH,66H,66H,66H,7CH,60H,60H,60H,60H,00H,00H,00H,00H;"P",15
DB 00H,00H,00H,3CH,66H,66H,66H,66H,66H,66H,66H,3CH,0CH,06H,00H,00H;"Q",16
DB 00H,00H,00H,7CH,66H,66H,66H,7CH,6CH,66H,66H,66H,00H,00H,00H,00H;"R",17
DB 00H,00H,00H,3CH,66H,60H,30H,18H,0CH,06H,66H,3CH,00H,00H,00H,00H;"S",18
DB 00H,00H,00H,7EH,18H,18H,18H,18H,18H,18H,18H,18H,00H,00H,00H,00H;"T",19
DB 00H,00H,00H,66H,66H,66H,66H,66H,66H,66H,66H,3CH,00H,00H,00H,00H;"U",21
DB 00H,00H,00H,66H,66H,66H,66H,66H,66H,66H,3CH,18H,00H,00H,00H,00H;"V",21
DB 00H,00H,00H,63H,63H,63H,6BH,6BH,6BH,36H,36H,36H,00H,00H,00H,00H;"W",22
DB 00H,00H,00H,66H,66H,34H,18H,18H,2CH,66H,66H,66H,00H,00H,00H,00H;"X",23
DB 00H,00H,00H,66H,66H,66H,66H,3CH,18H,18H,18H,18H,00H,00H,00H,00H;"Y",24
DB 00H,00H,00H,7EH,06H,06H,0CH,18H,30H,60H,60H,7EH,00H,00H,00H,00H;"Z",25
DB 00H,1EH,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,1EH,00H;"[",0
DB 00H,00H,40H,40H,20H,20H,10H,10H,10H,08H,08H,04H,04H,04H,02H,02H;"\",1
DB 00H,78H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,78H,00H;"]",2
DB 00H,1CH,22H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"^",3
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,01H,01H,01H,01H,01H,01H,00H;"-",1 USE _ TO DISPLAY-
DB 00H,60H,10H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"`",5
DB 00H,00H,00H,00H,00H,00H,00H,3CH,42H,1EH,22H,42H,42H,3FH,00H,00H;"a",6
DB 00H,00H,00H,0C0H,40H,40H,40H,58H,64H,42H,42H,42H,64H,58H,00H,00H;"b",7
DB 00H,00H,00H,00H,00H,00H,00H,1CH,22H,40H,40H,40H,22H,1CH,00H,00H;"c",8
DB 00H,00H,00H,06H,02H,02H,02H,1EH,22H,42H,42H,42H,26H,1BH,00H,00H;"d",9
DB 00H,00H,00H,00H,00H,00H,00H,3CH,42H,7EH,40H,40H,42H,3CH,00H,00H;"e",10
DB 00H,00H,00H,0FH,11H,10H,10H,7EH,10H,10H,10H,10H,10H,7CH,00H,00H;"f",11
DB 00H,00H,00H,00H,00H,00H,00H,3EH,44H,44H,38H,40H,3CH,42H,42H,3CH;"g",12
DB 00H,00H,00H,0C0H,40H,40H,40H,5CH,62H,42H,42H,42H,42H,0E7H,00H,00H;"h",13
DB 00H,00H,00H,30H,30H,00H,00H,70H,10H,10H,10H,10H,10H,7CH,00H,00H;"i",14
DB 00H,00H,00H,0CH,0CH,00H,00H,1CH,04H,04H,04H,04H,04H,04H,44H,78H;"j",15
DB 00H,00H,00H,0C0H,40H,40H,40H,4EH,48H,50H,68H,48H,44H,0EEH,00H,00H;"k",16
DB 00H,00H,00H,70H,10H,10H,10H,10H,10H,10H,10H,10H,10H,7CH,00H,00H;"l",17
DB 00H,00H,00H,00H,00H,00H,00H,0FEH,49H,49H,49H,49H,49H,0EDH,00H,00H;"m",18
DB 00H,00H,00H,00H,00H,00H,00H,0DCH,62H,42H,42H,42H,42H,0E7H,00H,00H;"n",19
DB 00H,00H,00H,00H,00H,00H,00H,3CH,42H,42H,42H,42H,42H,3CH,00H,00H;"o",20
DB 00H,00H,00H,00H,00H,00H,00H,0D8H,64H,42H,42H,42H,44H,78H,40H,0E0H;"p",21
DB 00H,00H,00H,00H,00H,00H,00H,1EH,22H,42H,42H,42H,22H,1EH,02H,07H;"q",22
DB 00H,00H,00H,00H,00H,00H,00H,0EEH,32H,20H,20H,20H,20H,0F8H,00H,00H;"r",23
DB 00H,00H,00H,00H,00H,00H,00H,3EH,42H,40H,3CH,02H,42H,7CH,00H,00H;"s",24
DB 00H,00H,00H,00H,00H,10H,10H,7CH,10H,10H,10H,10H,10H,0CH,00H,00H;"t",25
DB 00H,00H,00H,00H,00H,00H,00H,0C6H,42H,42H,42H,42H,46H,3BH,00H,00H;"u",26
DB 00H,00H,00H,00H,00H,00H,00H,0E7H,42H,24H,24H,28H,10H,10H,00H,00H;"v",27
DB 00H,00H,00H,00H,00H,00H,00H,0D7H,92H,92H,0AAH,0AAH,44H,44H,00H,00H;"w",28
DB 00H,00H,00H,00H,00H,00H,00H,6EH,24H,18H,18H,18H,24H,76H,00H,00H;"x",29
DB 00H,00H,00H,00H,00H,00H,00H,0E7H,42H,24H,24H,28H,18H,10H,10H,0E0H;"y",30
DB 00H,00H,00H,00H,00H,00H,00H,7EH,44H,08H,10H,10H,22H,7EH,00H,00H;"z",31
DB 00H,03H,04H,04H,04H,04H,04H,08H,04H,04H,04H,04H,04H,04H,03H,00H;"{",32
DB 08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H;"|",33
DB 00H,60H,10H,10H,10H,10H,10H,08H,10H,10H,10H,10H,10H,10H,60H,00H;"}",34
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0CH,0CH,00H,00H,00H;".",0  USE ~ TO DISPLAY . DOT
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;" ", SPACE AS 128

ORG 1500H
DB "POWER MIDI 1~0",13;

ORG 1600H ;PIXEL 32X32 16BIT 5,5,5
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,03H,00H,00H;
DB 00H,03H,0C0H,00H,00H,01H,0C4H,00H,00H,01H,0C3H,00H,00H,03H,0F7H,00H;
DB 00H,3FH,0F7H,00H,00H,1FH,0CEH,00H,00H,0FH,9CH,00H,00H,03H,38H,00H;
DB 00H,07H,7FH,80H,00H,0FH,0FFH,0C0H,00H,7FH,0C3H,80H,03H,0FBH,80H,00H;
DB 0FH,0C7H,20H,00H,0FH,0FH,18H,00H,00H,1EH,3CH,00H,00H,3EH,0FCH,00H;
DB 00H,7BH,0E0H,00H,00H,0E7H,80H,00H,01H,0C6H,02H,00H,03H,86H,02H,00H;
DB 07H,04H,02H,00H,0EH,06H,0FH,00H,18H,03H,0FFH,00H,00H,03H,0FEH,00H;
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"?",0
DB 00H,00H,00H,00H,00H,00H,18H,00H,00H,00H,1CH,00H,00H,0CH,1CH,00H;
DB 00H,0EH,1CH,00H,00H,06H,1EH,00H,00H,07H,7FH,00H,00H,1FH,0F8H,00H;
DB 00H,7EH,30H,00H,00H,7EH,70H,00H,00H,71H,0F8H,00H,00H,07H,0C0H,00H;
DB 00H,1CH,38H,00H,00H,07H,0DCH,00H,00H,49H,0B8H,00H,00H,39H,0E0H,00H;
DB 00H,39H,0F8H,00H,00H,17H,0F8H,00H,00H,7FH,0C0H,00H,03H,0FFH,0C0H,00H;
DB 07H,0CFH,0F0H,00H,02H,1CH,0F8H,00H,00H,18H,0BEH,00H,00H,30H,9FH,80H;
DB 00H,70H,8FH,0E0H,00H,0C1H,87H,0F8H,03H,11H,83H,0FCH,00H,0FH,80H,00H;
DB 00H,0FH,80H,00H,00H,07H,80H,00H,00H,03H,80H,00H,00H,00H,00H,00H;"?",1
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,30H,00H;
DB 00H,10H,30H,00H,00H,38H,60H,00H,00H,1CH,0E7H,00H,00H,18H,0DFH,0C0H;
DB 03H,19H,0F8H,0E0H,03H,9BH,98H,0E0H,03H,9BH,1CH,0E0H,03H,7BH,0FDH,0C0H;
DB 03H,0FDH,0F9H,80H,03H,71H,0BBH,80H,03H,21H,0BFH,00H,03H,5DH,0FEH,00H;
DB 03H,0FCH,0ECH,00H,03H,0F8H,0CCH,00H,03H,0F8H,0FFH,0E0H,03H,91H,0FFH,0F0H;
DB 03H,17H,0ECH,00H,03H,17H,8CH,00H,03H,10H,0CH,00H,06H,10H,0CH,00H;
DB 06H,10H,0CH,00H,02H,10H,0CH,00H,02H,10H,0CH,00H,00H,00H,0CH,00H;
DB 00H,00H,08H,00H,00H,00H,08H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"?",2

END

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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