About site: Programming/Languages/Pascal/Compilers - Pascal Compiler for the 8051 Microcontroller
Return to Computers also Computers
  About site: http://www.geocities.com/SiliconValley/Campus/9592/

Title: Programming/Languages/Pascal/Compilers - Pascal Compiler for the 8051 Microcontroller Cross compiler for the Intel 8051/8052 microcontroller. Accepts standard Pascal code and avoids having to program in assembly. Freeware.
dontclick_it_-_Institute_for_Interactive_Research Demonstrates a mouse-based user interface that uses no clicks. [Flash required]

Upgrade__The_European_Journal_for_the_Informatics_Professional A bimonthly technical, independent, non-commercial, and freely distributed electronic publication.

Pimp_My_Safari Safari plugins, Applescripts, bookmarklets and news. For those wanting to customize Safari the way that Firefox can be customized.

SDS_Software Software packages for center and home-based daycare programs. Free Demo Download.

Supreme_Data_Pro Specializes in capturing data from scanned images and offers turnkey solutions.

Wired_News__Patent_May_Threaten_E-Privacy The future of a key Web standard that would give consumers control over their online privacy hangs in the balance after news emerged that an entrepreneur will likely be awarded a set of patents on the


  Alexa statistic for http://www.geocities.com/SiliconValley/Campus/9592/





Get your Google PageRank






Please visit: http://www.geocities.com/SiliconValley/Campus/9592/


  Related sites for http://www.geocities.com/SiliconValley/Campus/9592/
    2002_UK_Information_Security_Breaches_Survey UK Government Department of Trade & Industry Information Security Breaches Survey web-site.
    PMC_Technologies,_Inc_ Manufactures and integrates removable disk drive subsystems, storage enclosures and expansion chassis.
    RFC_1697 Relational Database Management System (RDBMS) Management Information Base (MIB) using SMIv2. D. Brower, Editor, B. Purvy, RDBMSMIB Working Group Chair, A. Daniel, M. Sinykin, J. Smith. August 1994.
    Perfisans_Networks_Corp_ Offers TCP/IP offload engine and iSCSI accelerator ASICs.
    Pinjo Spam control using Blacklists, mark spam by modifying subject, anti relay possiblities. [Windows]
    Producer\'s_Edge Software for real estate agents and mortgage loan officers.
    HP9000/300_Linux Linux on the 68x based HP9000 series of workstations.
    Storm_Music_Studio Description and features of this program from Arturia with virtual instruments, sequencers, synthesizers and effects.
    IMC2000_-_Intelligent_Interactive_Assistance_and_Mobile_Multimedia_Computing_Conference_Proceedings Proceedings of the IMC2000 International Conference, Rostock, Germany; 9--10 November 2000. Around twenty research papers on various aspects of Intelligent Assistance and Mobile Multimedia Computin
    Benchmark_Execution_Speed_of_LabVIEW_Applications Compares 2 LabVIEW versions with C: brief text, 1 table. [National Instruments]
    Basic_Web_Design General web design information.
    GotGreat_Com Domain discussion forum and domain name directory.
    Digital_Teen_Chat Features Flash based chat, profiles, photo galleries and polls. Registration not required for general chat feature.
    PHP_Application_Tools A PHP directory offering tools and modifications for common PHP applications. Offerings include pre-written classes, bulletin board code and an XML renderer.
    Dante\'_Productions Developers of Electronic Assistantant Professional an information manager that includes an address book, journal, collection organizer, appointment scheduler, ToDo list, and e-mail client. [Win 95/98/
    IBM_Cloudscape Pure java database management system for distributed, embedded, mobile computing applications. [Commercial]
    Felicity_Web_Design Web design and hosting services for small business. Located at Cincinnati, Ohio.
    Avaron_Web_Solutions Offers site design, maintenance and domain name registration. Located in Orlando, Florida.
    Advanced_Personal_Notebook_Organizer Create, import, organize, and archive digital information. [Windows 95/98/NT]
    InduSoft_Corporation InduSoft produces software that transforms personal computers, Web browsers, or remote devices such as cell phones and PDAs into industrial automation and test and measurement systems.
This is websites2007.org cache of m/ as retrieved on 2008.11.18 websites2007.org's cache is the snapshot that we took of the page as we crawled the web. The page may have changed since that time.
Some simple extensions to the Pascal51 compiler Some simple extensions to a Pascal to 8051 Cross Compiler Derek Kennedy (Sherwood Intl. now SunGard), April 1998 Last Update 6th May 2002 e-mail: minerva9@hotmail.com Who might be interested in this stuff? 1. If you experiment with the Intel 8051 series of microcontrollers and want to avoid having to write all of your code in 8051 assembly language, this may be of interest. 2. If point 1. applies and you prefer writing Pascal to writing C, this really should be of interest. This page describes some enhancements which I made to an existing Pascal to 8051 cross-compiler. The compiler supports bit, byte, word, integer and real variables. Enumeration types, records, functions and procedures are catered for. Variables may be declared as residing at a user defined address. All of the standard Pascal flow control structures are supported (repeat..until, while do, case, if then else, labels). Sadly, char & strings were not supported. This freeware Pascal to 8051 cross compiler is called the ElProg Pascal51 compiler .... elprog51.zip ... (some folk have had trouble with downloading this - it's almost 500Kb. Drop me an email if you can't download & I'll email it to you). If you want to download my compiler enhancer right now, use this link .... prepro.zip As there appears to be no source code available for the Pascal51 compiler, it is difficult to add new features to the system (if anybody knows where the source can be downloaded pls. let me know!). Overall, the code generated by this compiler is not very �tight�. However, for those of us who don�t like to work with C, it is a worthwhile tool. I missed being able to work with strings and also wanted to be able to mix 8051 assembler with Pascal51 code, so decided to look at how these features might be added. The approach taken was to write a pre-processor program which takes a '.p80' textual source program (which supports some new features) and outputs a .p51 source file which will compile with the existing Pascal51 compiler. A post-processor was also needed to modify the generated .a51 assembler source file, the modified assembler file is given a '.a80' file extension. The new features described here are : String support : A limited ability to declare strings for use in a Pascal51 program. e.g. myString := �hello�; Single Character support : Single character constants are allowed. e.g. MyByte := �B�; PutChar(�x�); Inline Assembler support : Allows the creation of Pascal51 procedures which are implemented inline with 8051 assembler code. e.g. Procedure ReadTimer; {*Assembler}beginRDTIME: mov A,TH0 mov R0,TL0 cjne A,TH0,RDTIME mov R1,Aend; External Procedure support : Allows Pascal51 to make calls to assembler routines which are implemented as external 8051 assembler routines. e.g. Procedure ClearOut; {*External}begin; end;   String support A new type of global declaration block is supported. e.g. Strings Start at $4000; mystring := 'abcde'; mystring2 := 'eric'; This block must appear just after the program global var declarations. Only one such block is allowed (so strings are �global�). The block ends with a blank line. Note that the start address should be chosen to place the generated strings in a free area of ROM. When the pre-compiler finds a string, two actions are taken. First, a declaration is generated - e.g. mystring at $4000 : string; {�abcde�} mystring at $4006 : string; {�eric�} then a .asi (ASsembler Include) file is written to hold the necessary definitions for the strings. This file is merged with the .a51 file (to produce a .a80 file) later on. e.g. org $4000 db 5 ds �abcde� db 4 ds �eric� Notice that the strings are of type �string�, which needs to be declared thus : type string = record len : byte; chars : array[1..2] of byte; end; As you can see, each string starts with a byte which holds the length of the whole string (like Borland Turbo Pascal), strings have a maximum length of 255 bytes. The actual string is held in the array of chars. Since the upper bound of the chars array is not checked by the compiler, it does not really matter which upper bound value you use.When using strings as parametes to procedures & functions you will almost always want to declare these as 'var' parameters. If you want to have RAM based strings which can be manipulated at runtime, just declare your RAM based string : var ramstr at $2000 : string; and if necessary, initialise it using a procedure such as : procedure InitString(var ramStr : string; var romStr : string); {note the use of var parameters to ensure the passing of addresses} var ii : byte; begin ramStr.len := romStr.len; for ii := 1 to romStr.len do ramStr.chars[ii] := romStr.chars[ii]; end;   Some sample procedures which use these strings are : procedure Wait_TX_Ready;begin Repeat Until TI=1; end; procedure WriteCh(ch:byte); {write a character to the serial port} begin TI := 0; SBUF := ch; Wait_TX_Ready; end; procedure WriteString(var astring : string); {write out a string to the serial port} var ii: byte; {Note : Using a global �internal byte� as a loop index is much more efficient} begin with astring do for ii := 1 to len do WriteCh(chars[ii]); end; function Pos(var aString:string; TargetChar:byte):byte; {returns the index at which a character is located within a string or 0 if the char is not found in the string} var ii : byte; found : boolean; begin Pos := 0; found := false; ii := 1; while (ii <= aString.len) and (not found) do begin if aString.chars[ii] = TargetChar then begin Pos := ii; found := true; end; ii := ii + 1; end; end; procedure LeftString(var aRamString : string; var aString : string; CharCount:byte); {set aRamString to the leftmost CharCount characters of aString} var ii, jj : byte; begin jj := CharCount; if jj > aString.len then jj := aString.len; aRamString.len := jj; for ii := 1 to jj do aRamString.chars[ii] := aString.chars[ii]; end; procedure RightString(var aRamString : string, var aString : string, CharCount:byte); {set aRamString to the rightmost CharCount characters of aString} var ii, jj : integer; begin jj := CharCount; if jj > aString.len then jj := aString.len; ii := aString.len; aRamString.len := jj; while jj > 0 do begin aRamString.chars[jj] := aString.chars[ii]; jj := jj-1; ii := ii-1; end;end;   Single Character support This is basically a way of avoiding having to calculate the hex value of single characters which are held as byte values. Instead of writing case ch of $41: WriteString(messageA); $42: WriteString(messageB); �.. you can write case ch of 'A' : WriteString(messageA); 'B' : WriteString(messageB); �.. You can use this technique anywhere a single byte constant value is expected. The pre-compiler simply performs a string replacement.   Inline Assembler Functions This allows you to write asm code directly into your Pascal source file. The flag {*Assembler} is required. The procedure implemented in asm code is visible to the Pascal compiler. Note that it is the responsibility of the user to ensure that any registers used are suitably restored. Procedure mystore; {*Assembler}; begin mov a,#$66 mov dpl,#$45 mov dph,#$60 movex @dptr,a ret end; Ensure that instructions don�t start in column 1 of the source line (or they will look like labels to the assembler). Note that labels can be used - just ensure that the label name is unique and that the label starts in column 1. External assembler functions This feature is handy when you have an existing assembler routine which you wish to call from Pascal, but don�t want to include the assembler code inline. procedure ExtTest; {*External} begin end; The pre-compiler builds a list of all of the procedures which are implemented as �External�. This list is used to scan the generated .a51 file and remove the stubs of assembler which the compiler produces. The modified output is written to the .a80 file.   How to use the pre-preprocessor program First, get a copy of the Pascal51 compiler (see above) & experiment with it. It actually works very well without any of the extensions which are discussed here. Next, download my program & sample files for the pre-processor. prepro.zip When you run the pre-processor program for the 1st time, you should double-click on the compiler and assembler label text to setup your environment & let my program know where to find the Pascal51 compiler & your asm51 assembler. Next, create a new directory for your new project. Write your Pascal project source file & save it with a .p80 file extension. e.g. test.p80 Run the Pascal51_preprocess.exe, double click on the Project label & select the test.p80 file. Press the �Pre-Process� button. This should scan the test.p80 file & produce a test.p51 file. Now Press the �Compile� button. This should run the Pascal51 compiler and generate test.a51. Now click on the �Post-process� button to generate a �test.a80� file. Then click on the 'Assemble' button to assemble the test.a80 file. The 'Link etc.' button runs a batch file (<projectname>.bat) which should reside in the project directory. This is handy for running a linker & hex to binary program and anything else which you use. You need to create the .bat file yourself. The 'View Listing' buttons allow you to view the listing files & find any errors � you can use Windows file association to associate your favourite code editor with the .a51 and .lst file extensions. Pressing the �Edit Project� button allows you to edit the project (.p80) source file. The pre/post processor tool is written in Borland�s Delphi. It should run OK on Windows �95 or NT 4. It takes a very simplistic approach to parsing the input files - if you don�t get the syntax correct, the program might hangup without warning (so, keep backups of your source files). If you want the Delphi source code, use this link ... delphisrc.zip   (Interesting) things to note about the ElProg Pascal51 compiler - plus some bugs The compiler always seems to use the accumulator to hold the return value of functions whose return type is �byte�. The compiler was written before 'long' filenames were supported. It's best to avoid using long filenames for your working files. Watch out! The compiler generates incorrect code for functions whose return type is 'word' or 'integer'. Thanks to Mike Conboy for bringing this to my attention. I might eventually fix up my assembler post procesor to sort this problem. Meanwhile use this link for more details of this, and other bugs - mostly spotted & reported by Laurie Tunnicliffe ... various bugs. �For� loops can use bytes, words and enumerated types as loop counters, but can�t use integers. Functions can�t return a user defined �type�. Variables of type 'bit' can be set to 1 or 0 by assigning the variable to 'true' or 'false' respectively. Variables of type 'boolean' are held as a single byte and can be set to 1 or 0 by assigning the variable to 'true' or 'false' respectively. Note however, that bit and boolean variables are not assignment compatible. There is an undocumented 'xor' operator. If you would like to review some sample Pascal51 source code, use this link ... demo51.zip Thanks to Laurie Tunnicliffe for this sample code. Sadly, the 8051 code generated by Pascal51 is not very efficient. However, it is free! Futures I hope to made a (very simplistic) attempt to optimise some of the code generated by the compiler. Certain jump and call codes could be optimised. (e.g. where possible, some LJMPs could be converted to SJMPs or AJMPs). If you use this package, please drop me an e-mail & let me know how you get on.   Other Stuff The original documentation for the Pascal51 compiler mentions a Mr. Vladimir Gladyshev, working out of Moscow, Russia. I reckon that he deserves a mention here. Update!! Today, 10th March 2000, I received an email from Vladimir Gladyshev! He is now working as a computer systems architect in Russia. The good news is that he still has the source code for the Pascal51 compiler. Vladimir seems pleased that some folk are still using Pascal51. I've asked if he might consider posting the source code, but suspect that he is not keen to reveal his sources. Highly recommended! An excellent, low cost, Pascal to 805x development system. This features an integrated development environment, compiler, assembler and simulator. Code can be developed to be compatible with Borland Delphi. Code generation is very tight and in a different league from ElProg Pascal - the demo system now allows code sizes up to 1Kb - yes, this compiler can pack a non-trivial program into this small space! Another (longer established) version supports Z80/Z180. I use this compiler for all my 8051 work. Recently added is an AVR compiler. More details (and demo 8052 & Z80 system downloads) at http://users.iafrica.com/r/ra/rainier If you are looking for a good 8051 simulator, try http://www.vaultbbs.com/sim8052. there are also good 8051 tutorials at this site. I've recently found a long-standing (since 1984) Pascal cross-compiler which targets to 680x0, Z80 and 8051. Known as the MXPascal Multi-Target X-Compiler, details and a download can be found at http://www.pds.com.au/mxpascal/. I hope to have a closer look at this. If I do, I will report on my findings here. If this link is broken, email me for more info. If you have lots of money to spend & want to try yet another Pascal to 8051 family toolset, look at http://www.ksc-softsys.com. The NoICE tool is a superb remote debugger for the 8051 (and various other 8-bit micros). It supports source level debugging and assembly/disassembly as well as memory editing and breakpoints (without any hardware support) & loads of other features. There is now a Windows version of this product. I use it with the NoROM EPROM emulator & it works very well (Note @ Feb 2002: sorry to say that the NoROM unit is no longer commercially available). More details and a demo version available at http://www.noicedebugger.com A good site for 8051, PIC and AVR parts and projects can be found at http://www.dontronics.com There are also details of many software development tools and simmstick based solutions. Not much to do with Pascal ... but I spent ages trying to find datasheets for an Epson LCD module. A kind guy (Jan Eric) in Germany scanned his set of datasheets & emailed me approx 9Mb of JPEG files. The device is an EA-20017AR - I bought a few of these from my favourite surplus electronics supplier Greenweld Electronics http://www.greenweld.co.uk. You can download the (756Kb) .pdf which I created with this link ... lcdinfo.pdf Did some work on a handheld terminal unit. This was made by (the now defunct) Victor Micronic company. Writeup of the work can be read at http://www.geocities.com/micronic99.geo/ Had a lot of good fun experimenting with a small AVR development board. Details online here. Spent some time trying to find details of a 6502 compatible microcontroller, the Mitsubishi M50747. Eventually found a guy who had a databook. Will put some scans at http:/www.geocities.com/dk6502/ Some fine, inexpensive, electronics parts can be found at UK based supplier N. R. Bardwell http://www.bardwells.co.uk A comprehensive list of free compilers can be found at http://www.thefreecountry.com/developercity/index.html A great Wiki that documents many cool things to do with a Cybiko http://www.dbzoo.com/wiki/cybiko/cybiko Cool photos, refreshed daily http://anthonyfelton.com/photodiary2/   This page hosted by Get your own Free Home Page geovisit();setstats 1
 

Cross

compiler

for

the

Intel

8051/8052

microcontroller.

Accepts

standard

Pascal

code

and

avoids

having

to

program

in

assembly.

Freeware.

http://www.geocities.com/SiliconValley/Campus/9592/

Pascal Compiler for the 8051 Microcontroller 2008 November

dvd rental

dvd


Cross compiler for the Intel 8051/8052 microcontroller. Accepts standard Pascal code and avoids having to program in assembly. Freeware.

Rules




© 2008 Internet Explorer 5+ or Netscape 6+

Recommended Sites: 1. Arts - Business - Computers - Games - Health - Home - Kids and Teens - News - Recreation - Reference - Regional - Science - Shopping - Society - Sports - World Miss Gallery - Top Anime Hentai - DVD rental by mail - Buy PSP - Mobile Phones - File Host - Coupon Codes - Web Advertising
2008-11-18 14:42:03

Copyright 2005, 2006 by Webmaster
Websites is cool :) 147Nagrzewnice Wodne - Poland Hotel - Pozycjonowanie - Hotel Copenhagen - Warsongers.freehostia.com