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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课课程程设设计计报报告告课程名称:单片机原理与接口技术课程设计设计题目:简单计算器院系:机电工程学院班级:2010级电气工程及其自动化专业姓名:学号:指导教师:史丽萍,闫广明,张波,张扬,王冠然设计时间:2013年12月出勤实践报告总分一、设计方案描述与论证我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。可以在输入错误的时候退格,也可以初始化。在初始化的状态下可以进行关机以减少耗能。显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。我们使用的是4×4的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁下,然后是否释放。键盘被摁下后,先判断是什么键。如果是数字键,则进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。如果是算法键,则将对应的算法寄存地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。当按下的是退格键,则将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。复位键是使用的中断,当个位、十位、百位和千位都不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。二、硬件设计部分我们使用的是PIC16F877A单片机,使用四位的八段数码管,4×4的键盘和一个独立的中断键。八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。键盘我们使用RC端口扫描的方法来实现4×4的键盘。其中RC0、RC1、RC2和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,这时可以对应出哪一个按键被按下。中断键是单独接出的,外接电容增加其稳定性,减少被摁下是的抖动。三、软件设计部分主程序流程图键盘扫描子程序流程图第0、1、2、3、4、5、6、第7号键8、9、A号键子程序第C、D、E、F键子程序按键释放子程序流程图加法子程序流程图减法子程序流程图乘法子程序流程图除法子程序流程图十进制转换二进制程序流程图二进制转换十进制程序流程图睡眠子程序流程图中断子程序流程图源程序:;**********************************************************************;*;Filename:xxx.asm*;Date:*;FileVersion:*;*;Author:*;Company:*;*;*;**********************************************************************;*;Filesrequired:*;*;*;*;**********************************************************************;*;Notes:*;*;*;*;*;**********************************************************************listp=16f877A;listdirectivetodefineprocessor#includep16f877A.inc;processorspecificvariabledefinitions__CONFIG_CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_OFF&_HS_OSC&_LVP_OFF&_DEBUG_ON&_CPD_OFF;*****VARIABLEDEFINITIONSw_tempEQU0x71;variableusedforcontextsavingstatus_tempEQU0x72;variableusedforcontextsavingGEEQU0x40SHIEQU0x41BAIEQU0x42QIANEQU0x43S1HEQU0x44S1LEQU0x45S2HEQU0x46S2LEQU0x47R1HEQU0x48R1LEQU0x49M1HEQU0x4AM1LEQU0x4BM2HEQU0x4CM2LEQU0x4DM3HEQU0x4EM3LEQU0x4FR2HEQU0x50R2LEQU0x51SHUHEQU0x52SHULEQU0x53SHURUSHUEQU0x54SHU1HEQU0x55SHU1LEQU0x56P1HEQU0x57P1LEQU0x58FUHAOEQU0x59D1HEQU0x5AD1LEQU0x5BD2HEQU0x5CD2LEQU0x5DD3HEQU0x5ED3LEQU0x5FJIESHUEQU0x60COUNTEQU0x61.ZHONGEQU0x62DUI1EQU0x63DUI2EQU0x64JIANGEEQU0x65;**********************************************************************ORG0x000;processorresetvectorclrfPCLATH;ensurepagebitsareclearedgotoMAIN;gotobeginningofprogramORG0x004;interruptvectorlocationmovwfw_temp;saveoffcurrentWregistercontentsmovfSTATUS,w;movestatusregisterintoWregistermovwfstatus_temp;saveoffcontentsofSTATUSregister;isrcodecangohereorbelocatedasacallsubroutineelsewhereCALLDELAYCALLDELAYCALLDELAYCALLDELAYBTFSSPORTB,0GOTON1MOVLW00HSUBWFGEBTFSSSTATUS,ZGOTOCLEARAMOVLW00HSUBWFSHIBTFSSSTATUS,ZGOTOCLEARAMOVLW00HSUBWFBAIBTFSSSTATUS,ZGOTOCLEARAMOVLW00HSUBWFQIANBTFSSSTATUS,ZGOTOCLEARAINCFZHONGGOTON1CLEARACALLCLEARCLRFFUHAOCLRFZHONGCLRFJIESHUN1BCFINTCON,INTFmovfstatus_temp,w;retrievecopyofSTATUSregistermovwfSTATUS;restorepre-isrSTATUSregistercontentsswapfw_temp,fswapfw_temp,w;restorepre-isrWregistercontentsretfie;returnfrominterruptCHABIAOADDWFPCL,FRETLW0xC0RETLW0xF9RETLW0xA4RETLW0xB0RETLW0x99RETLW0x92RETLW0x82RETLW0xF8RETLW0x80RETLW0x90MAIN;remainingcodegoeshereBSFSTATUS,RP0CLRFTRISDBSFTRISB,0BCFTRISE,0BCFTRISB,1BCFTRISB,2BCFTRISB,3BCFTRISB,4BCFTRISC,0BCFTRISC,1BCFTRISC,2BCFTRISC,3BSFTRISC,4BSFTRISC,5BSFTRISC,6BSFTRISC,7BCFSTATUS,RP0BSFPORTB,1BSFPORTB,2BSFPORTB,3BSFPORTB,4CLRFPORTCBSFINTCON,INTEBSFINTCON,GIEBCFINTCON,INTFCLRFZHONGLOOPNMOVLW00HMOVWFGEMOVLW00HMOVWFSHIMOVLW00HMOVWFBAIMOVLW00HMOVWFQIANMOVLW0xFFMOVWFJIESHUCLRFS1LCLRFS1HCLRFSHU1LCLRFSHU1HCLRFS2LCLRFS2HCLRFR1LCLRFR1HCLRFR2LCLRFR2HCLRFSHUHCLRFSHULCLRFJIESHULOOPBTFSCZHONG,0GOTOGUANMOVFGE,WCALLCHABIAOMOVWFPORTDBCFPORTB,4CALLDELAYBSFPORTB,4MOVFSHI,WCALLCHABIAOMOVWFPORTDBCFPORTB,3CALLDELAYBSFPORTB,3MOVFBAI,WCALLCHABIAOMOVWFPORTDBCFPORTB,2CALLDELAYBSFPORTB,2MOVFQIAN,WCALLCHABIAOMOVWFPORTDBCFPORTB,1CALLDELAYBSFPORTB,1JIANPANMOVLW00HMOVWFPORTCMOVLW0F0HANDWFPORTC,WSUBLW0F0HBTFSCSTATUS,ZGOTOLOOPCALLDELAY10CALLDELAY10MOVLW00HMOVWFPORTCMOVLW0F0HANDWFPORTC,WSUBLW0F0HBTFSCSTATUS,ZGOTOLOOPMOVLW0FEHMOVWFPORTCBTFSSPORTC,4GOTOJIAN0BTFSSPORTC,5GOTOJIAN1BTFSSPORTC,6GOTOJIAN2BTFSSPORTC,7GOTOJIAN3MOVLW0FDHMOVWFPORTCBTFSSPORTC,4GOTOJIAN4BTFSSPORTC,5GOTOJIAN5BTFSSPORTC,6GOTOJIAN6BTFSSPORTC,7GOTOJIAN7MOVLW0FBHMOVWFPORTCBTFSSPORTC,4GOTOJIAN8BTFSSPORTC,5GOTOJIAN9BTFSSPORTC,6GOTOJIANABTFSSPORTC,7GOTOJIANBMOVLW0F7HMOVWFPORTCBTFSSPORTC,4GOTOJIANCBTFSSPORTC,5GOTOJIANDBTFSSPORTC,6GOTOJIANEBTFSSPORTC,7GOTOJIANFGOTOLOOPJINWEIMOVFBAI,WMOVWFQIANMOVFSHI,WMOVWFBAIMOVFGE,WMOVWFSHIMOVFSHURUSHU,WMOVWFGEGOTOLOOPJIAN0CALLSFANGBTFSCJIESHU,0GOTOCLEARMOVLW01HMOVWFSHURUSHUGOTOJINWEIJIAN1CALLSFANGBTFSCJIESHU,0GOTOCLEARMOVLW02HMOVWFSHURUSHUGOTOJINWEIJIAN2CALLSFANGBTFSCJIESHU,0GOTOCLEARMOVLW03HMOVWFSHURUSHU

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功