?? test20.asm
字號:
//======================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================
//============================================================
// 工程名稱:test20.spj
// 功能描述: 數碼管動態顯示0123.
// A0-A7輸出控制數碼管的段顯示,B2-B5輸出控制數碼管的位顯示,均為高電平有效
// 文件來源:《實驗儀實驗指導書》 "實驗二十四 4位8段LED數碼管顯示" 第88頁
// IDE環境: SUNPLUS u'nSPTM IDE 1.8.4
//
// 涉及的庫:
// 組成文件:
// test20.asm
//============================================================
//============================================================
// 文件名稱:test20.asm
// 實現功能: 數碼管動態顯示0123.
// A0-A7輸出控制數碼管的段顯示,B2-B5輸出控制數碼管的位顯示,均為高電平有效
//============================================================
.define P_IOA_Data 0x7000
.define P_IOA_Dir 0x7002
.define P_IOA_Attr 0x7003
.define P_IOB_Data 0x7005
.define P_IOB_Dir 0x7007
.define P_IOB_Attr 0x7008
.define P_Watchdog_Clear 0x7012
.ram
DisplayBuff: .DW 4 DUP(0) //定義一個4存儲單元的顯示緩沖區,存入顯示內容
.data
//顯示段碼存放區
DispTbl: .DW 0x003F,0x0006,0x005B,0x004F,0x0066 //0,1,2,3,4
.DW 0x006D,0x007D,0x0007,0x007F,0x006F //5,6,7,8,9
.DW 0x00FF //全亮
.code
.public _main;
//=============================================================
// 函數名稱: _main
// 功能描述: 數碼管動態顯示0123.
// 語法格式: 無
//入口參數: 無
// 出口參數: 無
// 注意事項: 僅為用戶模型
//=============================================================
_main:
r1=0x00FF; //初始化IOA0~IOA7為低電平輸出口
[P_IOA_Dir]= r1;
[P_IOA_Attr]= r1;
r1=0x0000;
[P_IOA_Data]= r1;
r1=0x003C; //初始化IOB2~IOB5為低電平輸出口
[P_IOB_Dir]= r1;
[P_IOB_Attr]= r1;
r1=0x0000;
[P_IOB_Data]= r1;
BP=DisplayBuff; //設置顯示緩沖區
r1=0x0001;
[BP++]= r1;
r1=0x0002;
[BP++]= r1;
r1=0x0003;
[BP++]= r1;
r1=0x0004
[BP++]= r1;
Loop1:
r3=0x0000; //初始化計數初值
r2=DisplayBuff; //r2指向顯示緩沖區
r4=0x0004; //顯示位碼
Loop2:
r1=0x0001 //清看門狗
[P_Watchdog_Clear] = r1
r1=0x0000 //暫時關閉所有的數碼管
[P_IOB_Data]= r1
BP=DispTbl; //BP指向段碼表
r1=[r2++]; //從顯示緩沖區內取顯示內容(即偏移量)
BP+=r1; //段碼表首地址加上偏移量
r1=[BP]; //從段碼表中取出段碼
[P_IOA_Data]= r1; //送出段碼
[P_IOB_Data]= r4; //送出位碼
r4= r4 LSL 1; //修改位碼,以便下一位顯示
r3+=0x0001; //計數器加1
CMP r3,0x0004 //4位數據顯示完否
JB Loop2 //未顯示完
JMP Loop1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -