⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc0832-1602lcd.lst

📁 数字电压表 AD芯片: 采用8位串行A/D转换器ADC0832。 ● 8位分辨率
💻 LST
📖 第 1 页 / 共 2 页
字号:
00C5 24C0            155               ADD  A,#0C0H     ;设置LCD的第二行地址
00C7 11A2            156               CALL  WCOM       ;写入命令
00C9 D0E0            157               POP  ACC         ;由堆栈取出A
00CB 11AF            158               CALL  WDATA      ;写入数据
00CD 22              159               RET
                     160     ;=================================================
                     161     ;ASCII 转换并在第二行显示数字子程序
                     162     ;=================================================
00CE                 163     LCD_CONV:
00CE EC              164               MOV  A,R4          ;加载数据
00CF 75200A          165               MOV  LCD_X,#10     ;设置位置
00D2 11E3            166               CALL  SHOW_DIG2A   ;显示数据
00D4 0520            167               INC  LCD_X         ;设置位置
00D6 742E            168               MOV  A,#'.'        
00D8 8520F0          169               MOV  B,LCD_X           
00DB 11C1            170               CALL  LCDP2        ;显示小数点
00DD ED              171               MOV  A,R5          ;加载数据
00DE 0520            172               INC  LCD_X         ;设置位置
00E0 11F1            173               CALL  SHOW_DIG2B   ;显示数据
00E2 22              174               RET
                     175     ;---------------------------------------
                     176     ;整数部分转换为ASCII码,送显示
                     177     ;只显示一位数
                     178     ;---------------------------------------
00E3                 179     SHOW_DIG2A:
00E3 75F010          180               MOV  B,#16
00E6 84              181               DIV  AB
00E7 E5F0            182               MOV  A,B        ;只取整数部分的个位
A51 MACRO ASSEMBLER  ADC0832_1602LCD                                                      03/29/2005 16:28:27 PAGE     4

00E9 2430            183               ADD  A,#30H     ;转换为ASCII码
00EB 8520F0          184               MOV  B,LCD_X    ;地址变量送B
00EE 11C1            185               CALL  LCDP2     ;送显示
00F0 22              186               RET
                     187     ;---------------------------------------
                     188     ;小数部分转换为ASCII码,送显示
                     189     ;显示两位数
                     190     ;---------------------------------------
00F1                 191     SHOW_DIG2B:
00F1 75F010          192               MOV  B,#16
00F4 84              193               DIV  AB
00F5 2430            194               ADD  A,#30H     ;转换为ASCII码
00F7 C0F0            195               PUSH  B
00F9 8520F0          196               MOV  B,LCD_X    ;地址变量送B
00FC 11C1            197               CALL  LCDP2     ;送显示
00FE D0F0            198               POP  B
0100 E5F0            199               MOV  A,B
0102 2430            200               ADD  A,#30H     ;转换为ASCII码
0104 0520            201               INC  LCD_X
0106 8520F0          202               MOV  B,LCD_X    ;地址变量送B
0109 11C1            203               CALL  LCDP2     ;送显示
010B 22              204               RET
                     205     ;=========================================================
                     206     ;AD0832 初始化与AD转换子程序
                     207     ;(A)=AD转换值
                     208     ;=========================================================
010C                 209     AD_CONV:                       
010C D2B4            210                 SETB AD_CS          ;一个转换周期开始
010E C290            211                 CLR  AD_CLK
0110 C2B4            212                 CLR  AD_CS          ;CS置0,片选有效
0112 D291            213                 SETB AD_DAT         ;DI置1,起始位
0114 00              214                 NOP
0115 D290            215                 SETB AD_CLK         ;第一个脉冲
0117 C291            216                 CLR  AD_DAT         ;在负跳变之前加一个DI反转操作
0119 C290            217                 CLR  AD_CLK
011B D291            218                 SETB AD_DAT         ;DI置1,设为单通道
011D 00              219                 NOP
011E D290            220                 SETB AD_CLK         ;第二个脉冲
0120 C291            221                 CLR  AD_DAT
0122 C290            222                 CLR  AD_CLK
0124 C291            223                 CLR  AD_DAT         ;DI置0,选择通道0
0126 00              224                 NOP
0127 D290            225                 SETB AD_CLK         ;第三个脉冲
0129 D291            226                 SETB AD_DAT
012B C290            227                 CLR  AD_CLK
012D 00              228                 NOP
012E D290            229                 SETB AD_CLK         ; 第四个脉冲
0130 7908            230                 MOV  R1,#08H        ;计数器初值,读取8位数据,
0132 C290            231     AD_READ:    CLR  AD_CLK         ;下降沿
0134 A291            232                 MOV  C,AD_DAT       ;读取DO端数据
0136 33              233                 RLC A               ;C移入A,高位在前
0137 D290            234                 SETB AD_CLK         ;下一个脉冲
0139 D9F7            235                 DJNZ R1,AD_READ     ;没读完继续
013B D2B4            236                 SETB  AD_CS
013D 22              237                 RET
                     238     ;====================================================
                     239     ;AD转换值处理子程序
                     240     ;入口:(A) =AD转换值
                     241     ;出口:处理后的数据 (R4)=高位,(R5)=低位
                     242     ;====================================================
013E                 243     AD_CHULI:
013E C3              244                 CLR  C
013F 7D00            245                 MOV  R5,#00H    ;十进制转换的低位寄存器
0141 7C00            246                 MOV  R4,#00H    ;十进制转换的高位寄存器
0143 7B08            247                 MOV  R3,#08H    ;十进制调整的次数
0145                 248     AD_CHULI1:
A51 MACRO ASSEMBLER  ADC0832_1602LCD                                                      03/29/2005 16:28:27 PAGE     5

0145 33              249                 RLC  A
0146 FA              250                 MOV  R2,A           ;送 R2 保存
0147 ED              251                 MOV  A,R5           ;(R5)乘2加C
0148 3D              252                 ADDC  A,R5
0149 D4              253                 DA  A               ;做十进制调整
014A FD              254                 MOV  R5,A           ;结果存回R5
014B EC              255                 MOV  A,R4           ;(R4)乘2加C
014C 3C              256                 ADDC  A,R4
014D FC              257                 MOV  R4,A           ;结果存回R4
014E EA              258                 MOV  A,R2
014F DBF4            259                 DJNZ  R3,AD_CHULI1  ;是否转换完?
0151 ED              260                 MOV  A,R5           ;(R5)乘2
0152 2D              261                 ADD  A,R5
0153 D4              262                 DA  A
0154 FD              263                 MOV  R5,A           ;结果存回R5
0155 EC              264                 MOV  A,R4
0156 3C              265                 ADDC  A,R4          ;(R4)乘2加C
0157 D4              266                 DA   A
0158 FC              267                 MOV  R4,A           ;结果存回R4
0159 22              268                 RET
                     269     ;---------------------------------------------------
                     270                 END             ;结束
A51 MACRO ASSEMBLER  ADC0832_1602LCD                                                      03/29/2005 16:28:27 PAGE     6

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
AD_CHULI . . . . .  C ADDR   013EH   A   
AD_CHULI1. . . . .  C ADDR   0145H   A   
AD_CLK . . . . . .  B ADDR   0090H.0 A   
AD_CONV. . . . . .  C ADDR   010CH   A   
AD_CS. . . . . . .  B ADDR   00B0H.4 A   
AD_DAT . . . . . .  B ADDR   0090H.1 A   
AD_READ. . . . . .  C ADDR   0132H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
CL1. . . . . . . .  C ADDR   009BH   A   
CLR_LINE . . . . .  C ADDR   0099H   A   
DEL1 . . . . . . .  C ADDR   006DH   A   
DELAY0 . . . . . .  C ADDR   00BCH   A   
DELAY1 . . . . . .  C ADDR   006BH   A   
FILL . . . . . . .  C ADDR   008DH   A   
INFO1. . . . . . .  C ADDR   002AH   A   
INFO2. . . . . . .  C ADDR   003BH   A   
INIT_LCD . . . . .  C ADDR   004CH   A   
LC1. . . . . . . .  C ADDR   0093H   A   
LCDP2. . . . . . .  C ADDR   00C1H   A   
LCD_CONV . . . . .  C ADDR   00CEH   A   
LCD_EN . . . . . .  B ADDR   00A0H.2 A   
LCD_RS . . . . . .  B ADDR   00A0H.0 A   
LCD_RW . . . . . .  B ADDR   00A0H.1 A   
LCD_SHOW . . . . .  C ADDR   0074H   A   
LCD_X. . . . . . .  N NUMB   0020H   A   
LINE1. . . . . . .  C ADDR   0077H   A   
LINE2. . . . . . .  C ADDR   0083H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
SET_LCD. . . . . .  C ADDR   0015H   A   
SHOW_DIG2A . . . .  C ADDR   00E3H   A   
SHOW_DIG2B . . . .  C ADDR   00F1H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0002H   A   
START1 . . . . . .  C ADDR   000DH   A   
WCOM . . . . . . .  C ADDR   00A2H   A   
WDATA. . . . . . .  C ADDR   00AFH   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -