找回密码
 注册会员
查看: 832|回复: 0

方波发生器设计 汇编语言编程

[复制链接]
发表于 2010-1-11 14:08:34 | 显示全部楼层 |阅读模式
<p>方波发生器设计 汇编语言编程</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:100 -</p>
<p>解决时间:2010-1-11 14:07</p>
<p>频率范围1-9999HZ,先通过3X4键盘选择方波频率,并在4位数码管上显示出来,再出单片机的并口输出该频率的方波信号,可用按键进行加减1HZ调整</p>
<p>提问者: mnopq123rst - 二级</p>
<p>最佳答案</p>
<p>; 控制位(三极管定义)</p>
<p>kzBW bit  p2.6</p>
<p>KZSW BIT  P2.5</p>
<p>KZGW  BIT  P2.4</p>
<p>; *******************************************</p>
<p>BAIW EQU  7FH      ; 的总存区</p>
<p>SHIW EQU 7EH     ;十位存区</p>
<p>GEW EQU 7DH     ;个位存区</p>
<p>BBBWT EQU  6Fh</p>
<p>BBSWT EQU  6EH</p>
<p>BBGWT EQU  6DH</p>
<p>TTY EQU 22H</p>
<p>;**************************************</p>
<p>ORG 000H</p>
<p>LJMP  START</p>
<p>ORG  001BH    ;程序开头</p>
<p>LJMP DOS</p>
<p>ORG 0030H</p>
<p>;**************************************</p>
<p>; 程序初始化</p>
<p>START:mov r4,#0h</p>
<p>CLR p2.3</p>
<p>CLR BBBWT               ;辨调时时数码管跳?</p>
<p>CLR BBSWT</p>
<p>CLR BBGWT              ;辨调分时数码管跳?</p>
<p>MOV BAIW,#00h            ;置零</p>
<p>MOV SHIW,#00H</p>
<p>MOV GEW,#00H</p>
<p>MOV SP,#60H</p>
<p>MOV 7bh,#8</p>
<p>mov r0,#00h</p>
<p>MOV TH1,75h   ; 送中断初值</p>
<p>MOV TL1,76h</p>
<p>SETB EA       ; 开启中断</p>
<p>SETB ET1</p>
<p>SETB TR1</p>
<p>;**************************************</p>
<p>; 主程序</p>
<p>MAIN:  ; 调用子程序  模块化</p>
<p>;*************************************************************</p>
<p>;独立式按键程序</p>
<p>JJPP: LCALL XSO</p>
<p>JB P1.7,jzpd    ;</p>
<p>LCALL XSO</p>
<p>JB P1.7,jzpd</p>
<p>FOO:LCALL XSO  ;放松 ?</p>
<p>JnB P1.7,FOO</p>
<p>MOV TH1,#3ch    ; 送中断初值</p>
<p>MOV TL1,#0b0h</p>
<p>clr p2.2        ;进入调频</p>
<p>INC R4</p>
<p>cjne r4,#4,jzpd</p>
<p>mov r4,#00h</p>
<p>MOV TH1,75h    ; 送中断初值</p>
<p>MOV TL1,76h</p>
<p>jzpd:cjne r4,#1,swj</p>
<p>SETB BBbwT</p>
<p>JB P1.6,bwjy   ;</p>
<p>LCALL XSO</p>
<p>JB P1.6,bwjy</p>
<p>ROO:LCALL XSO        ;放松</p>
<p>JnB P1.6, roo</p>
<p>bwj:mov a,baiw</p>
<p>inc a</p>
<p>cjne a,#0ah,loop</p>
<p>mov a,#00h</p>
<p>loop:mov baiw,a</p>
<p>bwjy:JB P1.5,main    ;</p>
<p>LCALL XSO</p>
<p>JB P1.5,main</p>
<p>RO: LCALL XSO         ;放松</p>
<p>JnB P1.5,ro</p>
<p>baiwj:mov a,baiw</p>
<p>cjne a,#00h,fll</p>
<p>mov baiw,#9</p>
<p>ljmp swj</p>
<p>fll: dec baiw</p>
<p>swj:cjne r4,#2,gwj</p>
<p>clr BBbwT</p>
<p>setb bbswt</p>
<p>JB P1.6,shiwjy   ;</p>
<p>LCALL XSO</p>
<p>JB P1.6,shiwjy</p>
<p>ROOn: LCALL XSO</p>
<p>JnB P1.6, roon</p>
<p>swjn:mov a,shiw</p>
<p>inc a</p>
<p>cjne a,#0ah,loop2</p>
<p>mov a,#00h</p>
<p>loop2:mov shiw,a</p>
<p>shiwjy:JB P1.5,lmain    ;</p>
<p>LCALL XSO</p>
<p>JB P1.5,lmain</p>
<p>Rll: LCALL XSO          ;放松</p>
<p>JnB P1.5, rll</p>
<p>shiwj:mov a,shiw</p>
<p>cjne a,#00h,flls</p>
<p>mov shiw,#9</p>
<p>ljmp gwj</p>
<p>flls: dec shiw</p>
<p>gwj:cjne r4,#3,hh</p>
<p>clr BBswT</p>
<p>setb bbgwt</p>
<p>JB P1.6,gewjy   ;</p>
<p>LCALL XSO</p>
<p>JB P1.6,gewjy</p>
<p>ROOl: LCALL XSO         ;放松</p>
<p>JnB P1.6, rool</p>
<p>swjnl:mov a,gew</p>
<p>inc a</p>
<p>cjne a,#0ah,loop2l</p>
<p>mov a,#00h</p>
<p>loop2l:mov gew,a</p>
<p>gewjy:JB P1.5,lmain    ;</p>
<p>LCALL XSO</p>
<p>JB P1.5,lmain</p>
<p>Rlll:LCALL XSO       ;放松</p>
<p>JnB P1.5, rlll</p>
<p>gewj:mov a,gew</p>
<p>cjne a,#00h,fllg</p>
<p>mov gew,#9</p>
<p>ljmp hh</p>
<p>fllg: dec gew</p>
<p>hh:LCALL XSO</p>
<p>clr bbgwt</p>
<p>lmain:cjne r4,#00h,jj</p>
<p>mov a,baiw</p>
<p>cjne a,#0,zzhh</p>
<p>mov a,shiw</p>
<p>cjne a,#0,zzhh</p>
<p>mov a,gew</p>
<p>cjne a,#0,zzhh</p>
<p>clr p2.0;上电后为0000不响   用于中断辨别</p>
<p>jj: ljmp main</p>
<p>;***************************************</p>
<p>zzhh:setb p2.0  ; 上电后不为0000响起  用于中断辨别</p>
<p>jb p2.2,jj</p>
<p>setb p2.2   ;退出调频 标志  调毕只走一次</p>
<p>mov a,baiw</p>
<p>mov b,#100                 ;8*100+8*10+8*1=888(自动存为16进制)</p>
<p>mul ab</p>
<p>mov 60h,a</p>
<p>mov 61h,b</p>
<p>mov a,shiw</p>
<p>mov b,#10</p>
<p>mul ab</p>
<p>mov 62h,a</p>
<p>mov 63h,b</p>
<p>mov a,gew</p>
<p>mov b,#1</p>
<p>mul ab</p>
<p>mov 64h,a</p>
<p>mov 65h,b</p>
<p>mov a,60h</p>
<p>add a,62h</p>
<p>mov 70h,a</p>
<p>mov a,61h</p>
<p>addc a,63h</p>
<p>mov 71h,a</p>
<p>clr c</p>
<p>mov a,70h</p>
<p>add a,64h</p>
<p>mov 51h,a</p>
<p>mov a,71h</p>
<p>addc a,65h</p>
<p>mov 52h,a</p>
<p>clr c</p>
<p>cjne a,#00h,ddh    ;1~~10hz 无法定时</p>
<p>mov a,51h</p>
<p>cjne a,#0ah,bbjj</p>
<p>mov th1,3ch</p>
<p>mov tl1,#0b0h</p>
<p>ljmp main</p>
<p>bbjj:jc xdh</p>
<p>ljmp ddh</p>
<p>xdh:mov 75h,#9eh</p>
<p>mov 76h,#58H</p>
<p>cjne a,#1,qq</p>
<p>mov 74h,#20</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>qq:cjne a,#2,rrr</p>
<p>mov 74h,#10</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>rrr:cjne a,#3,tt</p>
<p>mov 74h,#6</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>tt:cjne a,#4,yy</p>
<p>mov 74h,#5</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>yy:cjne a,#5,uu</p>
<p>mov 74h,#4</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>uu:cjne a,#6,ii</p>
<p>mov 74h,#3</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>ii:cjne a,#7,oo</p>
<p>ljmp main</p>
<p>oo:cjne a,#8,pp</p>
<p>mov 74h,#2</p>
<p>mov r5,74h</p>
<p>ljmp main</p>
<p>pp:cjne a,#9,lm</p>
<p>mov 74h,#2</p>
<p>mov r5,74h</p>
<p>lm:ljmp main</p>
<p>;***************************************************</p>
<p>ddh:mov r5,#00h             ;  xxx * 2</p>
<p>mov a,51h</p>
<p>mov b,#2</p>
<p>mul ab</p>
<p>mov 41h,b</p>
<p>mov 40h,a</p>
<p>mov b,#2</p>
<p>mov a,52h</p>
<p>mul ab</p>
<p>mov 43h,b</p>
<p>mov 42h,a</p>
<p>mov a,41h</p>
<p>add a,42h</p>
<p>mov 41h,a</p>
<p>mov a,43h</p>
<p>addc a,#00h</p>
<p>mov 43h,a</p>
<p>;****************************************************************</p>
<p>mov 54h,#40h        ;56h 55h 54h/43h 41h 40h==r7 r6</p>
<p>mov 55h,#42h</p>
<p>mov 56h,#0fh</p>
<p>mov r6,#00h</p>
<p>mov r7,#00h</p>
<p>www:mov a,54h</p>
<p>subb a,40h</p>
<p>mov 54h,a</p>
<p>mov a,55h</p>
<p>subb a,41h</p>
<p>mov 55h,a</p>
<p>mov a,56h</p>
<p>subb a,43h</p>
<p>mov 56h,a</p>
<p>jc jhq</p>
<p>mov a,r6      ;商</p>
<p>add a,#01</p>
<p>mov r6,a</p>
<p>mov a,r7         ;商</p>
<p>addc a,#00h</p>
<p>mov r7,a</p>
<p>jnb p1.7,llm</p>
<p>LCALL XSO</p>
<p>zhycjh:ljmp www</p>
<p>jhq:clr c</p>
<p>mov a,54h</p>
<p>add a,40h</p>
<p>mov 54h,a;余数</p>
<p>mov a,55h</p>
<p>addc a,41h</p>
<p>mov 55h,a  ;余数</p>
<p>mov a,56h</p>
<p>addc a,43h</p>
<p>mov 56h,a  ;余数</p>
<p>;***************************************</p>
<p>mov 77h,#1h</p>
<p>mov 78h,#00h</p>
<p>mov 79h,#00h</p>
<p>mov a,79h</p>
<p>subb a,r7</p>
<p>mov 75h,a     ;65536 - *****    高 位</p>
<p>mov r1,a</p>
<p>mov a,78h</p>
<p>subb a,r6</p>
<p>add a,#01h</p>
<p>mov 76h,a         ;65536 - *****  中位</p>
<p>mov r2,a</p>
<p>mov a,77h</p>
<p>subb a,#00h</p>
<p>mov  77h,a        ;65536 - *****   底位</p>
<p>mov r3,a</p>
<p>llm: ljmp main</p>
<p>;***************************************</p>
<p>;显示子程序</p>
<p>XSO:JNB BBbwT,SSBTT</p>
<p>JB TTY,SSBTT</p>
<p>MOV A,#0FFH</p>
<p>LJMP MMM</p>
<p>SSBTT:MOV A,baiw</p>
<p>MOV DPTR,#TAB</p>
<p>MOVC A,@A+DPTR</p>
<p>MMM:MOV P0,A</p>
<p>CLR KZbw</p>
<p>DJNZ  R0,$</p>
<p>SETB KZbw</p>
<p>SGT:JNB BBswT,SGBTT</p>
<p>JB TTY,SGBTT</p>
<p>MOV A,#0FFH</p>
<p>LJMP NNN</p>
<p>SGBTT:MOV A,shiw</p>
<p>MOV DPTR,#TABS</p>
<p>MOVC A,@A+DPTR</p>
<p>NNN:MOV P0,A</p>
<p>CLR KZSw</p>
<p>DJNZ  R0,$</p>
<p>SETB KZSw</p>
<p>FST:JNB BBgwT,FSBTT</p>
<p>JB TTY,FSBTT</p>
<p>MOV A,#0FFH</p>
<p>LJMP LLL</p>
<p>FSBTT:MOV A,gew</p>
<p>MOV DPTR,#TAB</p>
<p>MOVC A,@A+DPTR</p>
<p>LLL:MOV P0,A</p>
<p>CLR KZgw</p>
<p>DJNZ  R0,$</p>
<p>SETB KZgw</p>
<p>RET</p>
<p>;***************************************</p>
<p>;定时中断子程序</p>
<p>DOS:PUSH ACC</p>
<p>PUSH PSW</p>
<p>jb p2.2,eee  ;辨别。</p>
<p>MOV TH1,#3ch</p>
<p>MOV TL1,#0b0h</p>
<p>djnz 7bh,EXIT     ;给250ms 限制跳跃速度</p>
<p>mov 7bh,#8</p>
<p>CPL  TTY</p>
<p>clr p2.3</p>
<p>setb p2.1</p>
<p>LJMP EXIT</p>
<p>eee:jnb p2.0,exit</p>
<p>mov TH1,75h</p>
<p>mov TL1,76h</p>
<p>djnz r5,exit</p>
<p>mov r5,74h</p>
<p>CPL P2.3</p>
<p>cpl p2.1</p>
<p>EXIT:POP PSW</p>
<p>POP ACC</p>
<p>RETi</p>
<p>;***************************************</p>
<p>TAB:DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h</p>
<p>TABS:DB 0c0h,0f9h,64H,70H,59H,52H,42H,0F8H,40H,50H</p>
<p>END</p>
<p>0</p>
<p>回答者:</p>
<p>晓枫X残月 - 一级   2010-1-11 14:06</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>xiexie</p>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-8-7 09:52

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表