PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除

上传人:ra****d 文档编号:71515564 上传时间:2022-04-07 格式:DOC 页数:35 大小:1.90MB
收藏 版权申诉 举报 下载
PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除_第1页
第1页 / 共35页
PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除_第2页
第2页 / 共35页
PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除_第3页
第3页 / 共35页
资源描述:

《PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除》由会员分享,可在线阅读,更多相关《PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除(35页珍藏版)》请在装配图网上搜索。

1、课程设计报告课程名称: 单片机原理与接口技术课程设计设计题目: 简单计算器 院 系: 机电工程学院 班 级: 2021级电气工程及其自动化专业 姓 名: 学 号: 指导教师: 史丽萍,闫广明,张波,张扬,王冠然 设计时间: 2021年12月 出勤实践报告总分一、设计方案描述与论证我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。可以在输入错误的时候退格,也可以初始化。在初始化的状态下可以进行关机以减少耗能。显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。我们使用的是44的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁

2、下,然后是否释放。键盘被摁下后,先判断是什么键。如果是数字键,那么进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。如果是算法键,那么将对应的算法存放地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。当按下的是退格键,那么将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。复位键是使用的中断,当个位、十位、百位和千位都

3、不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。二、 硬件设计局部我们使用的是PIC16F877A单片机,使用四位的八段数码管,44的键盘和一个独立的中断键。八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。键盘我们使用RC端口扫描的方法来实现44的键盘。其中RC0、RC1、RC

4、2和RC3端口分别设置为输出,RC4、RC5、RC6和RC7端口设置为输入。两组端口分别接入键盘的行和列。RC4、RC5、RC6和RC7端口再通过10K的电阻接VCC以实现为高电平。键盘扫描的时候,首先RC0、RC1、RC2和RC3端口均输入为低电平0,判断RC4、RC5、RC6和RC7端口是否全为高电平1,如果是那么无按键被按下。如果不全为高电平1那么证明有按键被按下。这时需要依次将RC0、RC1、RC2和RC3端口置低电平0,检测RC4、RC5、RC6和RC7端口何时有一个变为低电平0,这时可以对应出哪一个按键被按下。中断键是单独接出的,外接电容增加其稳定性,减少被摁下是的抖动。三、 软件

5、设计局部 主程序流程图 键盘扫描子程序流程图 第0、1、2、3、4、5、6、 第7号键 8、9、A号键子程序 第C、D、E、F键子程序 按键释放子程序流程图 加法子程序流程图 减法子程序流程图 乘法子程序流程图 除法子程序流程图 十进制转换二进制程序流程图 二进制转换十进制程序流程图 睡眠子程序流程图 中断子程序流程图源程序: ;*; *; Filename: xxx.asm *; Date: *; File Version: *; *; Author: *; Company: *; *; *;*; *; Files required: *; *; *; *;*; *; Notes: *; *

6、; *; *; *;*list p=16f877A ; list directive to define processor#include ; processor specific variable definitions_CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _DEBUG_ON & _CPD_OFF ;* VARIABLE DEFINITIONSw_temp EQU 0x71 ; variable used for context savingstatus_temp EQU 0x

7、72 ; variable used for context savingGE EQU 0x40SHI EQU 0x41BAI EQU 0x42QIAN EQU 0x43S1H EQU 0x44S1L EQU 0x45S2H EQU 0x46S2L EQU 0x47R1H EQU 0x48R1L EQU 0x49M1HEQU0x4AM1LEQU0x4BM2HEQU0x4CM2LEQU0x4DM3HEQU0x4EM3LEQU0x4FR2H EQU 0x50R2L EQU 0x51SHUH EQU 0x52SHUL EQU 0x53SHURUSHU EQU 0x54SHU1H EQU 0x55SH

8、U1L EQU 0x56P1H EQU 0x57P1L EQU 0x58FUHAO EQU 0x59D1HEQU0x5AD1LEQU0x5BD2HEQU0x5CD2LEQU0x5DD3HEQU0x5ED3LEQU0x5FJIESHU EQU 0x60COUNT EQU 0x61 .ZHONGEQU0x62DUI1EQU0x63DUI2EQU0x64JIANGEEQU0x65;*ORG 0x000 ; processor reset vectorclrf PCLATH ; ensure page bits are cleared goto MAIN ; go to beginning of pr

9、ogram ORG 0x004 ; interrupt vector locationmovwf w_temp ; save off current W register contentsmovfSTATUS,w ; move status register into W registermovwfstatus_temp ; save off contents of STATUS register; isr code can go here or be located as a call subroutine elsewhereCALLDELAYCALLDELAYCALLDELAYCALLDE

10、LAYBTFSSPORTB,0GOTON1MOVLW00HSUBWFGEBTFSSSTATUS,ZGOTOCLEARAMOVLW00HSUBWFSHIBTFSSSTATUS,ZGOTOCLEARAMOVLW00HSUBWFBAIBTFSSSTATUS,ZGOTOCLEARAMOVLW00HSUBWFQIANBTFSSSTATUS,ZGOTOCLEARAINCFZHONGGOTON1CLEARACALLCLEARCLRFFUHAOCLRFZHONGCLRFJIESHUN1BCFINTCON,INTFmovf status_temp,w ; retrieve copy of STATUS regi

11、stermovwfSTATUS ; restore pre-isr STATUS register contentsswapf w_temp,fswapf w_temp,w ; restore pre-isr W register contentsretfie ; return from interruptCHABIAOADDWFPCL,FRETLW0xC0RETLW0xF9RETLW0xA4RETLW0xB0RETLW0x99RETLW0x92RETLW0x82RETLW0xF8RETLW0x80RETLW0x90MAIN; remaining code goes hereBSFSTATUS

12、,RP0CLRFTRISDBSFTRISB,0BCFTRISE,0BCFTRISB,1BCFTRISB,2BCFTRISB,3BCFTRISB,4BCFTRISC,0BCFTRISC,1BCFTRISC,2BCFTRISC,3BSFTRISC,4BSFTRISC,5BSFTRISC,6BSFTRISC,7BCFSTATUS,RP0BSFPORTB,1BSFPORTB,2BSFPORTB,3BSFPORTB,4 CLRF PORTCBSFINTCON,INTEBSFINTCON,GIEBCFINTCON,INTFCLRFZHONGLOOPNMOVLW00HMOVWFGEMOVLW00HMOVWF

13、SHIMOVLW00HMOVWFBAIMOVLW00HMOVWFQIAN MOVLW 0xFF MOVWF JIESHU CLRF S1L CLRF S1H CLRF SHU1L CLRF SHU1H CLRF S2L CLRF S2H CLRF R1L CLRF R1H CLRF R2L CLRF R2H CLRF SHUH CLRF SHULCLRFJIESHULOOPBTFSCZHONG,0GOTOGUANMOVFGE,WCALLCHABIAOMOVWFPORTDBCFPORTB,4CALLDELAYBSFPORTB,4MOVFSHI,WCALLCHABIAOMOVWFPORTDBCFP

14、ORTB,3CALLDELAYBSFPORTB,3MOVFBAI,WCALLCHABIAOMOVWFPORTDBCFPORTB,2CALLDELAYBSFPORTB,2MOVFQIAN,WCALLCHABIAOMOVWFPORTDBCFPORTB,1CALLDELAYBSFPORTB,1JIANPAN MOVLW 00H MOVWF PORTC MOVLW 0F0H ANDWF PORTC,W SUBLW 0F0H BTFSC STATUS,Z GOTO LOOP CALL DELAY10 CALL DELAY10 MOVLW 00H MOVWF PORTC MOVLW 0F0H ANDWF

15、PORTC,W SUBLW 0F0H BTFSC STATUS,Z GOTO LOOP MOVLW 0FEH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN0 BTFSS PORTC,5 GOTO JIAN1 BTFSS PORTC,6 GOTO JIAN2 BTFSS PORTC,7 GOTO JIAN3 MOVLW 0FDH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN4 BTFSS PORTC,5 GOTO JIAN5 BTFSS PORTC,6 GOTO JIAN6 BTFSS PORTC,7 GOTO JIAN7 MOVLW 0FBH

16、 MOVWF PORTC BTFSS PORTC,4 GOTO JIAN8 BTFSS PORTC,5 GOTO JIAN9 BTFSS PORTC,6 GOTO JIANA BTFSS PORTC,7 GOTO JIANB MOVLW 0F7H MOVWF PORTC BTFSS PORTC,4 GOTO JIANC BTFSS PORTC,5 GOTO JIAND BTFSS PORTC,6 GOTO JIANE BTFSS PORTC,7 GOTO JIANFGOTOLOOPJINWEI MOVF BAI,W MOVWF QIAN MOVF SHI,W MOVWF BAI MOVF GE

17、,W MOVWF SHI MOVF SHURUSHU,W MOVWF GE GOTO LOOPJIAN0 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW01HMOVWFSHURUSHUGOTOJINWEIJIAN1 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW02HMOVWFSHURUSHUGOTOJINWEIJIAN2 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW03HMOVWFSHURUSHUGOTOJINWEIJIAN3 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW00H

18、MOVWFSHURUSHUGOTOJINWEIJIAN4 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW04HMOVWFSHURUSHUGOTOJINWEIJIAN5 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW05HMOVWFSHURUSHUGOTOJINWEIJIAN6 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW06HMOVWFSHURUSHUGOTOJINWEIJIAN7 CALL SFANGCALL SHITOER MOVF R1L,W MOVWF S2L MOVF R1H,W MOVWF S2H

19、 MOVF SHU1L,W MOVWF S1L MOVF SHU1H,W MOVWF S1H BTFSC FUHAO,0 CALL ADDXY BTFSC FUHAO,1 CALL SUBXY BTFSC FUHAO,2 CALL MPXY BTFSC FUHAO,3 CALL DIVXY CALL ERTOSHIBSFJIESHU,0 GOTO LOOPJIAN8 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW07HMOVWFSHURUSHUGOTOJINWEIJIAN9 CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW08HMOVWFS

20、HURUSHUGOTOJINWEIJIANA CALL SFANGBTFSCJIESHU,0GOTOCLEARMOVLW09HMOVWFSHURUSHUGOTOJINWEIJIANB CALL SFANGMOVFSHI,WMOVWFGEMOVFBAI,WMOVWFSHIMOVFQIAN,WMOVWFBAICLRFQIANGOTOLOOPJIANC CALL SFANG CLRF FUHAO BSF FUHAO,0 CALL SHITOER MOVF R1L,W MOVWF SHU1L MOVF R1H,W MOVWF SHU1HBSFJIESHU,0 GOTO LOOPJIAND CALL S

21、FANG CLRF FUHAO BSF FUHAO,1 CALL SHITOER MOVF R1L,W MOVWF SHU1L MOVF R1H,W MOVWF SHU1HBSFJIESHU,0 GOTO LOOPJIANE CALL SFANG CLRF FUHAO BSF FUHAO,2 CALL SHITOER MOVF R1L,W MOVWF SHU1L MOVF R1H,W MOVWF SHU1HBSFJIESHU,0 GOTO LOOPJIANF CALL SFANG CLRF FUHAO BSF FUHAO,3 CALL SHITOER MOVF R1L,W MOVWF SHU1

22、L MOVF R1H,W MOVWF SHU1HBSFJIESHU,0 GOTO LOOPSFANG MOVLW 00H MOVWF PORTC MOVLW 0F0H ANDWF PORTC,W SUBLW 0F0h BTFSS STATUS,Z GOTO SFANG CALL DELAY10 CALL DELAY10 CALL DELAY10 MOVLW 00H MOVWF PORTC MOVLW 0F0H ANDWF PORTC,W SUBLW 0F0H BTFSS STATUS,Z GOTO SFANG RETURNCLEARBCFJIESHU,0CLRFGECLRFSHICLRFBAI

23、CLRFQIANRETURNDELAYDECFSZ30H,FGOTODELAYRETURNDELAY1DECFSZ30H,FGOTODELAYDECFSZ31H,FGOTODELAYRETURNADDXY MOVF S1L,W ADDWF S2L BTFSC STATUS,C INCF S2H MOVF S1H,W ADDWF S2H MOVF S2H,W MOVWF R1H MOVF S2L,W MOVWF R1L RETURNSUBXY COMF S2L INCF S2L BTFSC STATUS,Z DECF S2H COMF S2H CALL ADDXY RETURNMPXY MOVF

24、S1L,WMOVWFM1LMOVFS1H,WMOVWFM1HMOVFS2L,WMOVWFM2LMOVFS2H,WMOVWFM2HMOVFS1L,WMOVWFM3LMOVFS1H,WMOVWFM3HCLRFR1HCLRFR2HL2MOVLW00HSUBWFM2LBTFSSSTATUS,ZGOTOL1MOVLW00HSUBWFM2HBTFSCSTATUS,ZGOTOL3L1MOVFM1L,WMOVWFS1LMOVFM3L,WMOVWFS2LMOVFM1H,WMOVWFS1HMOVFM3H,WMOVWFS2HCALLADDXYMOVFR1L,WMOVWFM1LMOVFR1H,WMOVWFM1HMOV

25、FM2L,WMOVWFS1LMOVFM2H,WMOVWFS1HCLRFS2HMOVLW01HMOVWFS2LCALLSUBXYMOVFR1L,WMOVWFM2LMOVFR1H,WMOVWFM2HMOVFM1L,WMOVWFR1LMOVFM1H,WMOVWFR1HGOTOL2L3MOVFR1L,WMOVWFS1LMOVFR1H,WMOVWFS1HMOVFM3L,WMOVWFS2LMOVFM3H,WMOVWFS2HCAllSUBXYRETURNDIVXYMOVFS1L,WMOVWFD1LMOVFS1H,WMOVWFD1HMOVFS2L,WMOVWFD2LMOVFS2H,WMOVWFD2HCLRFD

26、3LCLRFD3HD1MOVFD2H,WSUBWFD1H,WBTFSSSTATUS,CGOTOD2BTFSSSTATUS,ZGOTOD3MOVFD2L,WSUBWFD1L,WBTFSSSTATUS,CGOTOD2D3MOVFD1L,WMOVWFS1LMOVFD1H,WMOVWFS1HMOVFD2L,WMOVWFS2LMOVFD2H,WMOVWFS2HCALLSUBXYMOVFR1L,WMOVWFD1LMOVFR1H,WMOVWFD1HMOVFD3H,WMOVWFS1HMOVFD3L,WMOVWFS1LCLRFS2HMOVLW01HMOVWFS2LCALLADDXYMOVFR1H,WMOVWFD

27、3HMOVFR1L,WMOVWFD3LGOTOD1D2MOVFD3L,WMOVWFR1LMOVFD3H,WMOVWFR1HMOVFD1L,WMOVWFR2LMOVFD1H,WMOVWFR2HRETURNDELAY10 MOVLW 0DH MOVWF 20HLOOP1 MOVLW 0FFH MOVWF 21HLOOP2 DECFSZ 21H GOTO LOOP2 DECFSZ 20H GOTO LOOP1 RETURNSHITOER MOVLW 03H MOVWF S2H MOVLW 0xE8 MOVWF S2L MOVF QIAN,W MOVWF S1L CLRF S1H CALL MPXY

28、MOVF R1H,W MOVWF SHUH MOVF R1L,W MOVWF SHUL MOVLW 64H MOVWF S2L CLRF S2H CLRF S1H MOVF BAI,W MOVWF S1L CALL MPXY MOVF SHUH,W MOVWF S1H MOVF SHUL,W MOVWF S1L MOVF R1H,W MOVWF S2H MOVF R1L,W MOVWF S2L CALL ADDXY MOVF R1H,W MOVWF SHUH MOVF R1L,W MOVWF SHUL MOVLW 0AH MOVWF S2L CLRF S2H MOVF SHI,W MOVWF

29、S1L CLRF S1H CALL MPXY MOVF SHUH,W MOVWF S1H MOVF SHUL,W MOVWF S1L MOVF R1H,W MOVWF S2H MOVF R1L,W MOVWF S2L CALL ADDXY MOVF R1H,W MOVWF S1H MOVF R1L,W MOVWF S1L CLRF S2H MOVF GE,W MOVWF S2L CALL ADDXY RETURNERTOSHI MOVF R1H,W MOVWF S1H MOVF R1L,W MOVWF S1L MOVLW 27H MOVWF S2H MOVLW 10H MOVWF S2L CA

30、LL DIVXY MOVLW 03H MOVWF S2H MOVLW 0xE8 MOVWF S2L MOVF R2L,W MOVWF S1L MOVF R2H,W MOVWF S1H CALL DIVXY MOVF R1L,W MOVWF QIAN MOVLW 64H MOVWF S2L CLRF S2H MOVF R2L,W MOVWF S1L MOVF R2H,W MOVWF S1H CALL DIVXY MOVF R1L,W MOVWF BAI MOVLW 0AH MOVWF S2L CLRF S2H MOVF R2L,W MOVWF S1L MOVF R2H,W MOVWF S1H C

31、ALL DIVXY MOVF R1L,W MOVWF SHI MOVF R2L,W MOVWF GE RETURNDUI1D MOVLW 0AH MOVWF S2L CLRF S2H MOVF DUI1,W MOVWF S1L CLRF S1H CALL DIVXY MOVF R1L,W MOVWF QIAN MOVF R2L,W MOVWF BAI RETURNDUI2D MOVLW 0AH MOVWF S2L CLRF S2H MOVF DUI2,W MOVWF S1L CLRF S1H CALL DIVXY MOVF R1L,W MOVWF SHI MOVF R2L,W MOVWF GE

32、 RETURNGUANSLEEPNOPGOTOLOOPNEND ; directive end of program 四、评价这个设计的所有运算都是基于加减法的,然后是得出乘除法,最后的个位、十位、百位和千位的整合转换为一个双精度的二进制数和将一个双精度的二进制数拆分为个位、十位、百位和千位都是基于乘除法的。所以当加减法子程序出现问题,计算器将不能工作。而且除法计算的结果是有余数的,不能进行余数的除法。这样计算器除法只能计算能被整除的算式,而不能计算不能被整除的算式,因为只会显示被整除局部,而余数无法显示。还有一个最大的问题就是还不能计算负数和小数位,这将是要改良的局部。经过编写这个简单计算器

33、的过程,我对程序编写的条理性更加的明确,都是将需要到达的目标分开成一步一步的小程序段,来实现一个大程序所需要实现的其中一小步,然后所有这些小程序整合起来就是一个大的程序。而且不能一次把一个大的程序写出来,因为如果其中那一段出现错误后将很难发现而且会感到十分的沮丧,这次就是,最后还是需要我一局部一局部拆开检测才发现了错误的所在。但是消耗了大量的时间。编写程序的时候需要个清晰的思路,这样你才能知道你这个程序需要怎么样的一步一步,你下一步需要编写什么样的一个程序段。五、 参考文献1. PIC单片机原理及应用李荣正2. PIC单片机实用教程李学海3. PIC系列单片机应用设计与实例窦振中4. PIC16F87X单片机实用软件与接口技术刘和平 感谢您的阅读

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!